私はJSplitPaneを含むJPanelを持っています。 JPanelは、invokeAndWaitメソッドを使用して、実行時にJFrameに挿入されます。次に、invokeLaterが呼び出され、SplitPane内の仕切り位置を更新します。
除数の更新が呼び出されると、JPanelの幅は0のままです。
コード内のどこにでもスリープまたはブレークポイントを追加すると(コードはinvokeLater以外)、コードは正常に動作します。起動時にJSplitPaneの分割場所を設定する方法
final JPanel viewPanel = new JPanel();
viewPanel.setLayout(new BorderLayout());
final JPanel header = getPresenterHeader(getPageTitle(), getPageInstructions());
viewPanel.add(header, BorderLayout.NORTH);
viewPanel.add(getSplitPane(), BorderLayout.CENTER);
toolbar = createActionsToolBar();
toolbar.addAction(new ExitPresenterAction(this));
viewPanel.add(toolbar, BorderLayout.SOUTH);
addContent(viewPanel);
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
splitPane.setDividerLocation(0.5);
}
});
それそれを使用しますEDTで呼び出された場合、 'invokeLater'は延期されます。 –
はい、私はそれの周りに私の頭を得ることができません。私は 'invokeLater'を理解しているので、GUIを拡張するのを待つべきです。 –
[イベントディスパッチスレッド](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)で、Swing GUIオブジェクトを構築してから、別のイベントを投稿する前に[例]( http://stackoverflow.com/a/5071109/230513)。 – trashgod