2012-03-28 1 views
0

私はGridLayoutにたくさんのボタンを入れています。実行時にユーザーがグリッドサイズを変更できるようにするには、どうすれば新しいグリッドを生成できますか?私は行/ colsをリセットし、ボタンを追加してみましたが、何も変わりません。グリッドのサイズを変更するためのスニペットを対処する新しいグリッドを作成するにはどうすればよいですか?

後期編集:

GridLayout layout = new GridLayout(10, 10);; 

void makeGrid(int newSize) { 
    for(int i = 0; i <= gridSize; i++) { 
     for(int j = 0; j <= gridSize; j++) { 
      layout.removeLayoutComponent(grid[i][j]); 
     } 
    } 

    gridSize = newSize; 
    layout = new GridLayout(gridSize, gridSize); 
    panel.setLayout(layout); 

    for(int i = 0; i <= gridSize; i++) { 
     for(int j = 0; j <= gridSize; j++) { 
      panel.add(grid[i][j]); 
     } 
    } 
    pack(); 
} 
+0

あなたのGUIは何ですか? GridLayoutは何に属していますか? – RAS

+0

これはJButtonの2D配列です。 GridLayoutはJPanelに属します。 – idlackage

答えて

0

は、新しいレイアウトを設定し、自分のクラスのリスナーから次に

// pane is your JPanel object 
public void displayButtons(){ 
    pane.add(btn1); 
    pane.add(btn2); 
    pane.add(btn3); 
    pane.add(btn4); 
    pane.add(btn5); 
    pane.add(btn6); 
    pack(); // <- make sure you include this code 
} 

、のようなボタンを表示するための別の方法を定義してみてくださいdisplayButtons()メソッドを呼び出します。

pane.setLayout(new GridLayout(0,2)); 
displayButtons(); 
+0

おかげで、pack()はGUIを更新する限り、このトリックをやっています - これは、既に存在していたものにボタンを追加するだけです。 removeLayoutComponent()を呼び出すことはどちらかと思われません。 – idlackage

+0

多分私はコードのスニペットを表示し、あなたが何かを見逃しているかどうかを見るならあなたを助けることができます... –

関連する問題