【问题标题】:How do I make a new grid?如何制作新网格?
【发布时间】:2023-03-19 09:53:01
【问题描述】:

我将一堆按钮放入 GridLayout。如果我希望用户能够在运行时更改网格大小,如何生成新网格?我尝试重置行/列并重新添加按钮,但没有任何变化。

用于调整网格大小的应对 sn-p 的后期编辑:

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();
}

【问题讨论】:

  • 你的图形用户界面是什么? GridLayout 属于什么?
  • 这只是一个 JButtons 的二维数组。 GridLayout 属于 JPanel。

标签: java jpanel grid-layout


【解决方案1】:

尝试定义一个单独的方法来显示按钮,例如,

// 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();

【讨论】:

  • 谢谢,pack() 在更新 GUI 方面起到了作用——不过,这只是在已经存在的按钮上添加了更多按钮,除非我遗漏了一些东西。调用 removeLayoutComponent() 似乎也不起作用。
  • 如果您向我展示您的代码的 sn-p,也许我可以更好地帮助您,我们会看看您是否遗漏了什么......
猜你喜欢
  • 1970-01-01
  • 2021-10-23
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2022-01-07
  • 2020-07-25
相关资源
最近更新 更多