我有一个简单的Java代码,我将MouseMotionListener附加到JButton并在每次拖动鼠标时刷新按钮的位置,但是,我得到了奇怪的位置。有没有更好的方法呢?我一直不幸找到任何解决方案。
public static void main(String[] args) {
JFrame frame = new JFrame("Janela 1");
JPanel myPainel = new JPanel();
myPainel.setLayout(null);
final JButton btn = new JButton("First button");
btn.setBounds(0,0,100,50);
//btn.setLocation(50, 50);
btn.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
btn.setBounds((int)p.getX(), (int)p.getY(), 100, 50);
}
@Override
public void mouseMoved(MouseEvent e) {
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(myPainel);
myPainel.add(btn);
frame.setSize(600, 400);
frame.setVisible(true);
}
编辑:我可以用这段代码改进动画:
public void mouseDragged(MouseEvent e) {
Point p = MouseInfo.getPointerInfo().getLocation();
btn.setBounds((int)p.getX() - 50, (int)p.getY() - 50, 100, 50);
}