2016-10-07 30 views
-2

私は1つのJDesktopPaneと2つのJInternalFrameを持つJavaアプリケーションを持っています。起動時にJInternalFrameのいずれかをロードしたい起動時にJDesktopPane内のJInternalFrameを開く方法

JDesktopPaneのリスナーからJInternalFrameを開こうとしましたが、JDesktopPaneが右上に表示され、その半分が表示されずにJDesktopPaneが最大化(またはサイズ変更)されるため、ロードされます。これをどうすれば解決できますか?

EDIT:

MainWindow mainWindow = new MainWindow(); //MainWindow is a JFrame 
mainWindow.setVisible(true); 

//code to load JInternalFrame here 

私はデバッグしようとすると、このコードは動作します。しかし、アプリケーションを実行すると、JInternalFrameをロードするコードが実行された後でMainWindowが最大化されます。私はいくつかの遅延を追加するか、またはウィンドウが最大化されるのを待つかもしれないと思います!

編集2: Thread.sleepが追加されました。今では、メイン・ウィンドウコンストラクタはそれでsetExtendedState(java.awt.Frame.MAXIMIZED_BOTH);を持っていた

MainWindow mainWindow = new MainWindow(); //MainWindow is a JFrame 
mainWindow.setVisible(true); 

Thread.sleep(1000) 
//code to load JInternalFrame here 

正常に動作します。それは何とか実行する時間がかかります。理由を理解できませんでした。しかし、うまくいく!

+0

あなたの質問に[mcve]を含めるように[編集]してください。 –

答えて

-2

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

関連する問題