2016-11-11 17 views
2

GridBagLayoutのコンポーネントを同じ幅にする方法は?私はGridBagConstraint.weightxを試しましたが、動作しません。GridBagLayoutのコンポーネントを同じ幅にする

enter image description here

static void test3() { 
    JFrame f = new JFrame("Test"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setSize(480, 360); 
    Container pane = f.getContentPane(); 
    pane.setLayout(new GridBagLayout()); 

    String[] a = { 
      "Lorem ipsum dolor sit amet", 
      "consectetur adipisicing", 
      "elit, ", 
      "sed do", 
      "eiusmod", 
    }; 
    for (int i = 0; i < 5; i++) { 
     GridBagConstraints c = new GridBagConstraints(); 
     c.gridx = i % 3; 
     c.gridy = i/3; 
     c.weightx = 0.5; 
     c.fill = GridBagConstraints.HORIZONTAL; 
     f.add(new JButton(a[i]), c); 
    } 
    f.setVisible(true); 
} 

答えて

1
static void test3() { 
    JFrame f = new JFrame("Test"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setSize(800, 360); 
    Container pane = f.getContentPane(); 
    pane.setLayout(new GridBagLayout()); 

    String[] a = { 
      "Lorem ipsum dolor sit amet", 
      "consectetur adipisicing", 
      "elit,", 
      "sed do", 
      "eiusmod", 
    }; 
    for (int i = 0; i < 5; i++) { 
     JButton test=new JButton(a[i]); 
     GridBagConstraints c = new GridBagConstraints(); 
     c.gridx = i %3; 
     c.gridy = i /3; 
     c.fill = GridBagConstraints.HORIZONTAL; 
     test.setPreferredSize(new Dimension(250,25)); 
     f.add(test, c); 
    } 
    f.setVisible(true); 
} 

あなたは、ボタンの推奨サイズを設定する必要があります。これはあなたに望ましい結果をもたらします

+1

'test.setPreferredSize(new Dimension(250,25));'マジックナンバーで、必要なサイズの推測値を超えない。 「Java Swingのset(Preferred | Maximum | Minimum)サイズメソッドの使用を避けるべきでしょうか?」(http://stackoverflow.com/q/7229226/418556)(はい。) –

+0

これは単なるクイックテストでしたあなたが本当にしたい場合は、必ず数値を変数に置き換えることができます。彼がgridbaglayoutに滞在したいと思えば、それ以外の解決策はformlayoutを使うことができます – XtremeBaumer

2

ビューのそのセクションにはGridLayoutを使用してください。ボタンはすべて同じサイズになり、最も高いコンポーネントに必要な高さと、最も広いコンポーネントに必要な幅を割り当てます。

私はGridBagConstraint.weightxを試しましたが、動作しません。

weightx制約は、GUIのサイズが変更されたとき余分幅または高さを割り当てる方法で行うことがより多くを有するが、細胞は/それはその行/列の必要幅最小の高さで開始します。

関連する問題