2017-02-26 6 views
-2

でのJPanelのサイズを変更するBoxLayoutの使用:私は現在、私が働いているこのコードを持っているGUI

this.getContentPane().add(wwjPanel, BorderLayout.EAST); 
     if (includeLayerPanel) 
     { 
      this.controlPanel = new JPanel(); 
      controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS)); 
      this.layerPanel = new LayerPanel(this.getWwd()); 
      this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000))); //This is the top pan 
      this.controlPanel.add(this.getStates(), Box.createRigidArea(new Dimension(0, 100))); 
      this.controlPanel.add(this.getPanelAlerts(), Box.createRigidArea(new Dimension(0,100))); 

      this.getContentPane().add(this.controlPanel, BorderLayout.WEST);//This is the whole panel on the left 
     } 

私はそれぞれに、ここでのControlPanelと呼ばれる、のJPanelのサイズを変更しようとしています私のGUIで独自のサイズをしています。私はjavaを使ってGUIを構築するのが初めてで、私が持っているコードの大部分は別のファイルから引き出されています。私が取り入ろうとしているコードは、これらの新しいパネルが自分のコードに記述されているようにして、それらのサイズを変更しようとしています。私が望む効果を得るために使用したいものをBoxLayoutですか?

また、私はcreateRigidAreaを使用するとうまくいくように見えますが、x値とy値を変更しても何も起こらないようです。つまり、値を変更しても視覚的な違いはなく、0〜1000の範囲の値を使用しています。

ありがとうございました。

答えて

2
this.controlPanel.add(new FlatWorldPanel(this.getWwd()),Box.createRigidArea(new Dimension(1000, 1000))); 

Box.createRigidArea(...)は何もしていません。 add(...)メソッドの2番目のパラメタはレイアウトマネージャによって使用される制約であり、BoxLayoutは制約を無視して無視する必要があります。

あなたが垂直に積み重ねられたパネル間の垂直方向のスペースを望むなら、あなたは別の成分として、それを追加する必要があり、あなたはおそらくBox.createVerticalStrut()を使用します。

this.controlPanel.add(new FlatWorldPanel(this.getWwd())); 
this.controlPanel.add(Box.createVerticalStrut(50)); 

FlatWorldPanelのサイズは、次のコンポーネントによって決定されますそれに加えなさい。

詳細および使用例については、How to Use BoxLayoutのSwingチュートリアルのセクションを参照してください。

+0

それは理にかなっており、ドキュメントにリンクしています。しかし、あなたの視点を持ってそれをクリアしました。 – MuffinMan1042

関連する問題