2011-12-04 15 views
2

私は、Java SwingのGridBagLayoutに3つの中央の垂直ボタンを追加しようとしています。今私は、デフォルトのグリッドサイズは3x3だと思います。私はそれを変更して列と行を追加できるかどうかを知りたかったのです。私は単に、3つの中央に等間隔に配置されたbutonsをペインに作成したいと考えています。GridBagLayoutのグリッドサイズを変更する

pane.setLayout(new GridLayout(10,1)); 
    // Insert a space before the first button 
    for (int i = 1; i < 6; i++){ 
     pane.add(new JLabel("")); 
    } 
    pane.add(new Button("1")); 
    pane.add(new Button("2")); 
     pane.add(new Button("3")); 
    // Insert a space after the last button 
    pane.add(new JLabel("")); 

これは皆さんありがとうございました!

+2

なぜGridBagLayoutでなければならないのですか? 1つの列と3つの行を持つGridLayoutはあなたのために完全に正しいと思う。 – Chris

+0

最後の日に大きな進展があった場合 – mKorbel

+0

あなたが探しているものが見つかりましたので嬉しいです。 – GETah

答えて

6

私は容易になるだろう@クリスGridLayoutに同意:

myPanel.setLayout(new GridLayout(5,1)); 
// Insert a space before the first button 
add(new JLabel("")); 
add(new Button("1")); 
add(new Button("2")); 
add(new Button("3")); 
// Insert a space after the last button 
add(new JLabel("")); 
+0

ボタンは最初のボタンの上と最後のボタンの下の空白にする必要があります。私はGridLayoutを試してこの効果を得ることができませんでした。 (2、2)、(3,2)、(4,2)にボタンが必要です。 –

+0

@MatthewKemnetzこれは空のラベルをそこに挿入することで実現できます。私の編集を見てください。 – GETah

+0

私はそれを見て、それは非常にうまくいった –

4

重み属性に値を追加するだけです。これは、グリッドバッグをレイアウトする方法を指示します - 0は必要なスペースのみを使用し、残りのスペースは与えられたウェイトに従って分割されます。

GridBagLayout gbl = new GridBagLayout(); 
... 
gbl.columnWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE}; 
gbl.rowWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE}; 
... 
contentPane.setLayout(gbl_contentPane); 

そして、あなたのアイテムに新しい列/行の(0から)適切に設定gridxgridyGridBagConstraintsを与える:

GridBagConstraints gbc = new GridBagConstraints(); 
... 
gbc.gridx = 3; 
gbc.gridy = 3; 
... 
contentPane.add(textFieldName, gbc_textFieldName); 
関連する問題