2011-12-29 16 views
0

私は解決できない問題があります。私は私のGUIアプリケーションを3つのJPanels(左、中央、右)に分割したいと思っています。私は左のパネルと右のパネルが固定されたサイズであり、中央が流体になるようにしたい。意味のあるサイドパネルは、JFrameが展開され、中央パネルがボットを水平方向および垂直方向に展開するので、垂直方向にのみ展開されます。Java - MigLayout境界を設定する

すべてのパネルの高さが600になるように最小サイズを設定しましたが、JFrameの境界線をどのように設定するか分かりません。

package ppe.view; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import net.miginfocom.swing.MigLayout; 

public class UI_View extends JFrame 
{ 
    private JList  browse = new JList(); 
    private JScrollPane rightX = new JScrollPane(); 
    private JButton  btn1 = new JButton("Button 1"); 
    private JButton  btn2 = new JButton("Button 2"); 
    private JButton  btn3 = new JButton("Button 3"); 
    private JButton  btn4 = new JButton("Button 4"); 


    public UI_View() 
    { 
     this.setTitle("Prototype MVC Arhitecture"); 
     this.setMinimumSize(new Dimension(800, 600)); 
     this.setExtendedState(this.MAXIMIZED_BOTH); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLayout(new MigLayout()); 

     JPanel content = new JPanel(new MigLayout()); 
     content.setBackground(Color.black); 

     JPanel right = new JPanel(new MigLayout()); 
     JPanel center = new JPanel(new MigLayout()); 
     JPanel left = new JPanel(new MigLayout()); 

     right.setBackground(Color.red); 
     right.setMinimumSize(new Dimension(200, 600)); 
     right.setMaximumSize(new Dimension(200, 37500)); 

     center.setBackground(Color.green); 
     center.setMinimumSize(new Dimension(400, 600)); 

     left.setBackground(Color.blue); 
     left.setMinimumSize(new Dimension(200, 600)); 
     left.setMaximumSize(new Dimension(200, 37500)); 

     content.add(left); 
     content.add(center); 
     content.add(right); 

     this.setContentPane(content); 
    } 

    public static void main(String[] args) 
    { 
     new UI_View().setVisible(true); 
    } 

} 

私は別のコンテンツパネルにそれらの境界と、自動的にJFrameの境界に境界を定めるが、事はまだ固定はかなりあるのJFrameにCONTENTPANEとしてそのパネルを追加しようと試みてきました。

答えて

1

MiGLayoutを使用している場合、コンポーネントを追加するときに制約を設定しないのはなぜですか?

(私も、 MiGLayout初心者だが)これは、例えば、役立つかもしれない

:私もpushxを追加するために必要ないくつかのケースでは

content.add(left, "growy"); 
content.add(center, "grow"); //the same as growx, growy 
content.add(right, "growy"); 

が、これが必要なとき、私はよく分かりません。詳細については、ドキュメントを参照してください。

編集:列/行を大きくする必要があるコンポーネントには常にpushを追加する必要があるようです。それ以外の場合は、growだけで、コンポーネントがその列/行と同じ大きさになり、その列/行はその列/行の中で最大のコンポーネントによって定義されます。使用可能なスペースがさらにある場合は、pushキーワードを使用しないと、列/行がいっぱいになりません。

コンポーネントは、決して「プッシュ」の列/行のサイズが成長のキーワードを使用しても大きくなるようにします:ドキュメントから

+0

助けてくれてありがとうございました。私は制約を拡大するために調べましたが、助けてくれないようです。 –

+0

@kellax、 ''デバッグ ''パラメータを使って' 'MiGLayout'を作成してペイントされた枠線を見てみましょう。さらに、センターパネルに '' grow、pushx "'を追加してみてください。 – Thomas

+0

これはうまく動くようになりました。左右のサイズと中心が固定されています。私はこれを次のように定義しなければならなかった:サイドパネル.​​add(panel、 "growy、pushy")とcenter "grow、pushx" "psuhxまたはpushy"は、スペースをいっぱいにしたい場合は、方向を広げてください。 –

関連する問題