1

所以我试图有一个可以通过标题栏拖动的窗口。由于它在另一个框架内,我需要手动执行此操作。这就是鼠标侦听器的代码。

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 以跟踪鼠标在标题栏上的位置,但我想对此进行测试。问题是它会移动一次,然后在我拖动鼠标时不再移动。这是为什么?

4

1 回答 1

3

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

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

于 2012-06-11T03:20:06.190 回答