• 締切済み

JSplitPaneディバイダの初期設定について

JSplitPaneを使って、分割された左側のComponentを最大化に初期設定したいですが、 ...... splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.setRightComponent(textPane1); splitPane.setLeftComponent(textPane2); splitPane.setOneTouchExpandable(true); splitPane.setPreferredSize(new Dimension(800,680)); splitPane.setDividerLocation(splitPane.getMaximumDividerLocation()); ...... うまくいかない。 よろしくお願いします

みんなの回答

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんばんは。  おそらく、  splitPane.setDividerLocation(splitPane.getMaximumDividerLocation());  ↑これを呼ぶのが早すぎるのだと思います。  JFrame上に配置された各Swingコンポーネントのサイズが確定するタイミングは、そのJFrameのsetVisible(true)メソッドやpack()メソッドが初めて呼ばれた時にレイアウトマネージャーによって、各コンポーネントのサイズが設定されます。  つまり、まだ、JFrameのsetVisible(true)メソッドやpack()メソッドが呼ばれる前にsplitPane.getMaximumDividerLocation()メソッドを呼ぶとJSplitPaneの実際のサイズが設定される前であるため、正しい最大値が得られないことになります。  JFrameを表示させた後か、packメソッドを呼んだ後、もしくは、WindowEventでwindowOpenedイベントが起きたときにディバイダを設定したほうがよいと思います。

関連するQ&A