2012-03-28 23 views
0

我在GridLayout中放入了一堆按鈕。如果我希望用戶能夠在運行時更改網格大小,如何生成新的網格?我嘗試重置行/列並重新添加按鈕,但沒有任何更改。如何製作新的網格?

的後期編輯處理片段用於調整電網:

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 2012-03-28 05:38:24

+0

這只是一個JButton的二維數組。 GridLayout屬於一個JPanel。 – idlackage 2012-03-28 14:32:12

回答

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

謝謝,只要更新GUI,pack()就可以完成這個任務 - 這只是爲已經存在的按鈕添加更多按鈕,除非我錯過了某些東西。調用removeLayoutComponent()似乎也不起作用。 – idlackage 2012-03-28 14:40:10

+0

也許我可以幫助你更好,如果你給我看一段代碼,我們會看看你是否錯過了一些東西...... – 2012-03-28 16:44:38