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

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

最佳答案

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

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

关于java - 为什么不能在标题栏上拖动窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10974180/

10-11 00:34