为什么JButton没有正确更新Bounds?

时间:2014-11-16 05:13:25

标签: java swing awt jbutton mousemotionlistener

我有一个简单的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);
}

0 个答案:

没有答案