如何在启动时在JDesktopPane中打开JInternalFrame

时间:2016-10-07 20:51:04

标签: java jinternalframe

我有一个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);。这在某种程度上需要时间来执行。无法弄清楚原因。虽然工作正常!

1 个答案:

答案 0 :(得分:-2)

Dimension desktopSize = desktopPane.getSize(); Dimension jInternalFrameSize = jInternalFrame.getSize(); jInternalFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/ 2,(desktopSize.height-jInternalFrameSize.height)/ 2);