我有一个Java应用程序,它有一个JDesktopPane和几个JInternalFrame。我想在启动时加载一个JInternalFrame。
我尝试从JDesktopPane的监听器打开JInternalFrame,然后加载,但由于JDesktopPane在此之后最大化(或进行一些调整大小),JInternalFrame位于右上角,其中一半不可见。我该如何解决这个问题?
编辑:
MainWindow mainWindow = new MainWindow(); //MainWindow is a JFrame
mainWindow.setVisible(true);
//code to load JInternalFrame here
当我尝试调试时,此代码有效。但是当我运行应用程序时,只有在执行加载JInternalFrame的代码之后,MainWindow才会最大化。我想我可能会增加一些延迟或等待窗口最大化!
编辑2:
添加了Thread.sleep
。现在它工作正常
MainWindow mainWindow = new MainWindow(); //MainWindow is a JFrame
mainWindow.setVisible(true);
Thread.sleep(1000)
//code to load JInternalFrame here
MainWindow构造函数中包含setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
。这在某种程度上需要时间来执行。无法弄清楚原因。虽然工作正常!
答案 0 :(得分:-2)
Dimension desktopSize = desktopPane.getSize(); Dimension jInternalFrameSize = jInternalFrame.getSize(); jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/ 2,(desktopSize.height-jInternalFrameSize.height)/ 2);