2012-04-30 4 views
0

BoxLayoutを使用して、水平方向に3つのコンポーネントをレイアウトしています.2つのJList(J1とJ2)とその間のJPanel(X)です。「中間」パネルで区切られた2つのJListsのレイアウト? (Java Swing)

--------------- 
|    | 
|    | 
| J1 X J2 | 
|    | 
|    | 
--------------- 

私が午前問題は、BoxLayoutは各列同じ大きさをしているということですが、Xは、すべての利用可能な水平方向のスペースを取るために、その最小サイズとJ1とJ2であるために、私が欲しいのです。これどうやってするの?基本的に、私が行っている外観は、このようなものです。

enter image description here

+2

投稿SSCCE。私が知る限り、ボックスレイアウトは異なるサイズの列を許可します。 – StanislavL

+0

'X'の好ましいサイズは? – trashgod

+0

なぜこれにSSCCEが必要ですか?中間コンポーネントで区切られた2つのJListsです。すべて同じレイアウトマネージャを使用しています。それよりもはっきりしない。 –

答えて

1

私はGridBagLayoutを使用します。

中央ボタンはJPanelに含まれます。

JList、ボタンJPanel、およびJListは、行全体に3つの要素を持つ1行に含まれます。

+0

はい、私はこれをやってしまった。私は両方のJListsに 'weightx' /' weighty''と 'fill''を' BOTH'としました。私は中間パネルに 'weightx' /' weighty'を0、 'fill'を' NONE'にしました。 –

-1

あなたはsetPreferredSizesetMinimumSizeメソッドを使用する必要があります。これらは、画面サイズを離れてあなたのペインのサイズをベースに、この方法と組み合わせて使用​​することができます。

screen Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

あなただけの固定サイズとして、あなたのウィンドウを持っているかもしれませんが。あなたはJPanelに項目を追加する必要があるリストでは

は、オブジェクトの数に基づいて、パネルのサイズを設定してから、スクロールペインが正しいサイズであることを確認するためにsetViewPortとそのJPanelからJScrollPaneビューを設定しました。

+1

参照[Java Swingのset(Preferred | Maximum | Minimum)サイズメソッドの使用を避けるべきでしょうか?](http://stackoverflow.com/q/7229226/230513)? – trashgod

+1

私は今日何かを学んだ。私は今静かになるでしょう。 –

0

てJList間の水平方向の接着剤を入れてください:

box.add(Box.createHorizontalGlue()) 
-1
JPanel panel_20 = new JPanel(); 
    tabbedPane_2.addTab("New tab", null, panel_20, null); 
    panel_20.setLayout(new BoxLayout(panel_20, BoxLayout.X_AXIS)); 

    JPanel panel_24 = new JPanel(); 
    panel_24.setBorder(new EmptyBorder(3, 3, 3, 3)); 
    panel_20.add(panel_24); 
    panel_24.setLayout(new BorderLayout(0, 0)); 

    JList list_7 = new JList(); 
    list_7.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); 
    panel_24.add(list_7); 

    JPanel panel_25 = new JPanel(); 
    panel_20.add(panel_25); 
    panel_25.setLayout(new BoxLayout(panel_25, BoxLayout.Y_AXIS)); 

    JButton btnNewButton_4 = new JButton(">"); 
    panel_25.add(btnNewButton_4); 

    JButton btnNewButton_5 = new JButton("<"); 
    panel_25.add(btnNewButton_5); 

    JPanel panel_26 = new JPanel(); 
    panel_26.setBorder(new EmptyBorder(3, 3, 3, 3)); 
    panel_20.add(panel_26); 
    panel_26.setLayout(new BorderLayout(0, 0)); 

    JList list_8 = new JList(); 
    list_8.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); 
    panel_26.add(list_8, BorderLayout.CENTER); 
関連する問題