final Button button = new Button(composite, SWT.NONE);
final Point[] offset = new Point [1];
button.addMouseMoveListener(new MouseMoveListener() {
public void mouseMove(final MouseEvent e) {
if (offset[0] != null) {
Point pt = offset[0];
button.setLocation(e.x - pt.x, e.y - pt.y);
}
}
});
button.addMouseListener(new MouseAdapter() {
public void mouseDown(final MouseEvent e) {
offset[0] = new Point(e.x - button.getLocation().x, e.y - button.getLocation().y);
}
public void mouseUp(final MouseEvent e) {
offset[0] = null;
}
});我想用上面的代码实现按钮拖拽,但是实现的效果是按钮实际的移动总是比鼠标慢,并且偶尔闪烁,该怎么解决?
解决方案 »
- jLabel设置的图片怎么在jScrollPane置顶显示
- 变态的JAVA继承求解
- JAVA 500M文件读取,并找出所有数组“abcd”,输出其所在行
- 关于Socket编程
- 请问怎样才能将JTextFiled里的数字存到数组里面呢?谢谢!
- 关于HashMap(int initialCapacity)的问题
- 关于线程组的一个问题
- 我想知道java cpu现在是否有比较著名的公司制作?
- 谁有Borland AppServer4.5的licence key
- 请问用JBuilder5怎样打包?
- 初学者非常非常虚心求教,怎样在SWT中的拖拽中实现半透明层并且跟综鼠标?
- 在线急等 java swing 中的实时流量监控问题
JFrame mainFrame;
JPanel mainPanel;
JButton bt1; public DragTest() {
mainFrame = new JFrame();
mainPanel = new JPanel(null);
bt1 = new JButton("Button1");
bt1.setBounds(10,10,10,10);bt1.setTransferHandler(new TransferHandler("text"));
bt1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
}public void mouseReleased(MouseEvent e){
//在这里处理button的setBounds
}
); mainPanel.add(bt1, BorderLayout.PAGE_START);
mainFrame.getContentPane().add(mainPanel);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible(true);
} public static void main(String[] args) {
new DragTest();
}
}