[英]Getting a JFrame's actual current location
我试图创建一个(子)JFrame,它从第二个(父)JFrame的一侧下方滑出。 目的是让孩子在移动时跟随父母,并对大小调整事件做出响应。 这与这个问题有些相关。
我尝试使用ComponentListener,但是使用此方法,子级仅在父级停止时移动,而我希望子级在父级拖动到屏幕周围时移动。
我尝试的另一个选项是启动一个新的刷新线程,该线程使用getLocation()或getLocationOnScreen()不断更新孩子的位置,但是滞后时间与ComponentListener相同。
有没有办法即使在拖动过程中也能获得JFrame的真实位置? 还是如果没有,是否有办法获得纸张从下方滑出并跟随框架的效果?
如果在Mac上不起作用,则还可以在拖动开始时存储初始位置,然后窗口的位置为initialPosition +鼠标移动。
您应该使用MouseAdapter类的mouseDragged(MouseEvent e)方法。 在拖动主窗口时,将获得许多这些mouseDragged事件-通过将第二个窗口移动到相对于主窗口位置的位置来处理每个事件。
如果看到“滞后”或直到主窗口停止才重新定位,请尝试通过在重新定位后在第二个窗口上调用repaint()和/或将重新定位代码放在SwingUtilities.invokeLater(中)来强制Swing重新绘制。 ..)区块:
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
// your logic here
}
});
让我知道是否有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.