我必须维护的遗留应用程序有一个奇怪的行为。启动时,应用程序的 JFrame 会移动到最近关闭的位置(即使在多显示器设置下也可以正常工作)。
当 JFrame 移动到辅助监视器(通过调用 完成setLocation(x, y)
)并在调用之后setRelativeTo(mainFrame)
显示 JDialog 时,JDialog 将出现在主监视器上。
必须将主机拖到主监视器上,然后再拖回辅助监视器,以避免出现问题。
我发现,mainFrame.getGraphicsConfiguration().getDevice().getIDstring()
当应用程序启动时调用会返回 \Display0(意味着“主显示器”afaik),即使它显示在辅助监视器上。当我将主框架拖到主监视器并返回到辅助监视器时,方法返回 \Display1。
现在我有两个问题:
- 有没有办法告诉应用程序它位于哪个监视器上?
- 我试图用 JFrame 和 JDialog 创建一个简单的例子。不幸的是,它的行为符合预期,我无法重现该问题。您是否对在我的应用程序中寻找什么有提示,这可能会导致这种行为?
非常感谢
klib