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;
}
});我想用上面的代码实现按钮拖拽,但是实现的效果是按钮实际的移动总是比鼠标慢,并且偶尔闪烁,该怎么解决?
解决方案 »
- 用不规则数组实现杨辉三角的输出
- 自己对一个例子的理解 请改错
- statement.execute如何判断执行成功?
- 使用Calendar类时——疑惑
- java 栈和堆的问题 请高手帮忙
- servertool中为什么注册时总提示主类找不到?
- Java里面怎么运行一个存储在.sql文件中所有的sql语句???
- 急需解决,请高手指点在线等待!!
- 我公司准备搞一个在线旅游的系统,初步准备用基于java的一些技术,希望大家能够提出一些好建议。
- java编写一个多线程同时运行的代码
- 初学者非常非常虚心求教,怎样在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();
}
}