尝试将 JDIalog 放置在 JFrame 的当前位置之上

问题描述 投票:0回答:1

我正在编写 Java 应用程序的扩展;它的 API 无法访问应用程序主窗口的位置。我创建了自己的 JFrame,并将该 JFrame 定位为

AwtUtil.centerWindow(jFrameReference);

我希望将 JFrame 放置在主窗口当前位置的顶部,但没有任何对主窗口的引用,我假设我不能这样做。上面的调用似乎将 JFrame 放在我的 Windows 10 计算机上的 #1 显示屏的中心。

但是我还创建了一个带有按钮的弹出 JDialog,我想将其放置在我自己的 JFrame 之上,无论单击按钮时它在哪里。为此,我在对话框的构造函数中放置了对 JFrame 的引用,然后在对话框构造函数中调用:

super(jFrameReference, title, Dialog.ModalityType.APPLICATION_MODEL);
但是如果我移动 JFrame,然后单击按钮弹出对话框,对话框将出现在 JFrame 首次出现的位置,而不是单击按钮时 JFrame 所在的位置。创建对话框时(即显示之前)是否以某种方式保存了 JFrame 的位置?我在这里缺少什么?

java swing jdialog
1个回答
0
投票
这不是一个通用答案,但它解决了我的问题。当 JFrame 位于其原始位置时,我的 JDialog 已创建但不可见。我猜想 JFrame 的位置以某种方式保存在某处,并在显示 JDialog 时使用。我通过将 JFrame 的引用存储为对话框中的私有变量来解决该问题,然后在对话框可见时

calling jDialogReference.setLocationRelativeTo(jFrameReference)

© www.soinside.com 2019 - 2024. All rights reserved.