有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取JFrame的实际当前位置

我试图创建一个(子)JFrame,它从第二个(父)JFrame的一侧下方滑出。目标是让孩子在移动时跟随父母,并对调整大小的事件做出响应。这与这个question有些关联

我尝试过使用ComponentListener,但使用这种方法,只有在父对象停止时,子对象才会移动,而我希望在父对象在屏幕上拖动时,子对象也会移动

我尝试的另一个选项是启动一个新的刷新线程,该线程使用getLocation()或getLocationOnScreen()不断更新孩子的位置,但延迟与ComponentListener相同

有没有办法获得JFrame的真实位置,即使是在拖动过程中?或者,如果没有,有没有一种方法可以让床单从下面滑出,并沿着框架四处移动


共 (2) 个答案

  1. # 1 楼答案

    您应该使用MouseDapter类的MouseDraged(MouseEvent e)方法。 当你拖动主窗口时,你会看到很多鼠标标记的事件——通过移动第二个窗口到一个相对于主窗口位置的位置来处理每一个事件

    如果您看到“lag”,或者在主窗口停止之前它没有重新定位,请尝试通过在重新定位后在第二个窗口上调用repaint()来强制Swing重新绘制,和/或将重新定位代码放入SwingUtilities中。调用器(…)街区:

    SwingUtilities.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            // your logic here
        }
    });
    

    如果有帮助,请告诉我

  2. # 2 楼答案

    如果在Mac上不起作用,也可以在拖动开始时存储初始位置,然后窗口的位置是initialPosition+鼠标移动