所以我想要一个可以通过标题栏拖动的窗口。因为它在另一个框架内,我需要手动完成。这就是鼠标监听器的代码。
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以跟踪鼠标在标题栏上的位置,但我想测试一下。问题是它会移动一次,然后不再拖动我的鼠标。那是为什么?
答案 0 :(得分:3)
因为您没有更新currentMouseEvent
,所以一直将窗口移动到按下鼠标的位置。
在拖动过程中,您需要MouseMotionListener
来获取新事件。