为什么我不能通过标题栏拖动窗口?

时间:2012-06-11 03:16:26

标签: java swing jpanel

所以我想要一个可以通过标题栏拖动的窗口。因为它在另一个框架内,我需要手动完成。这就是鼠标监听器的代码。

titleBar.addMouseListener(new MouseAdapter() 
    {
        public void mousePressed(MouseEvent e)
        {
            currentMouseEvent = e;
            dragging = true;
        }
        public void mouseReleased(MouseEvent e)
        {
            dragging = false;
            currentMouseEvent = null;
        }
    });

这是更新循环的代码。 (这是在另一个线程上的while循环)

if (dragging)
{
    try
    {
        setPosition(currentMouseEvent.getXOnScreen(), currentMouseEvent.getYOnScreen());
    }
    catch(NullPointerException e)
    {
        //do nothing
        Main.SoundSystem.fatalError();
    }
}

我知道需要更改setPosition以跟踪鼠标在标题栏上的位置,但我想测试一下。问题是它会移动一次,然后不再拖动我的鼠标。那是为什么?

1 个答案:

答案 0 :(得分:3)

因为您没有更新currentMouseEvent,所以一直将窗口移动到按下鼠标的位置。

在拖动过程中,您需要MouseMotionListener来获取新事件。