我必须维护遗留应用程序的奇怪行为。启动时,应用程序的JFrame将移动到最近关闭的位置(即使在多显示器设置下也能正常工作)。
将JFrame移动到辅助监视器(通过调用setLocation(x, y)
完成)并在调用setRelativeTo(mainFrame)
后显示JDialog时,JDialog将出现在主监视器上。
必须将主机拖动到主监视器上并返回辅助监视器以避免问题。
我发现,当应用程序启动时,调用mainFrame.getGraphicsConfiguration().getDevice().getIDstring()
会返回\ Display0(意味着'主要显示'afaik),即使它显示在辅助监视器上。当我将主框架拖动到主监视器并返回到辅助监视器时,方法返回\ Display1。
现在我有两个问题:
非常感谢你 klib
答案 0 :(得分:2)
关于第一个问题,您可以使用JFrame(GraphicsConfiguration)
。
如果问题不可重复,可能会有其他事情搞砸了
答案 1 :(得分:2)
经过一些研究后,我发现我必须再次致电mainframe.setVisible(false);
并mainframe.setvisible(true);
这足以使mainframe.getGuiConfiguration.getDevice()
返回正确的设备ID。
我知道,这不是原始问题的真正解决方案,但如果其他人经历相同的行为,它可能会有所帮助。
无论如何,对此问题的解释/真正解决方案仍然非常感激。