如何修复布局管理
How to fix layout management
我正在 Java 制作扫雷的克隆版。一切都很好,但我想在顶部添加一个计数器。现在,一些按钮不在屏幕上。我必须更改哪些布局才能修复它?
添加计数器之前:
(https://i.imgur.com/cSKmCGr.jpg)
添加后"counter"
(https://i.imgur.com/fbMQqQz.jpg)
这是我的代码:
public static JPanel generate() {
i2w = row*row-ilosc_min;
przyc = new Sap[row][row];
JPanel all = new JPanel(); //panel that contains counter and buttons
JPanel licznik = new JPanel(); //Counter
licznik.setBackground(Color.red);
licznik.setPreferredSize(new Dimension(MyFrame.wym-50, 50)); //counter takes 50 px height and full width of frame
all.add(licznik);
JPanel panel = new JPanel(); //Buttons panel
panel.setVisible(true);
panel.setLayout(new GridLayout(row, row));
for(int x = 0; x < row; x++) { //creating buttons
for(int y = 0; y < row; y++) {
Sap sp = new Sap(x, y); //My buttons that extends JButton
przyc[x][y] = sp;
panel.add(sp); //Adding button to panel
}
}
all.add(panel); //All contains counter and buttons
return all; //Returning it
}
当我不创建计数器面板时,按钮就像第二张照片中那样。
抱歉有任何错误,英语不是我的主要语言。
首先您知道您的两个面板的默认布局是什么吗?
最短的工作解决方案是使根面板使用 BorderLayout
并在根面板对象上添加计数器调用时
add(BorderLayout.NORTH,theCounterObject);
对于按钮的面板,也在根面板上调用它
add(BorderLayout.CENTER,theButtonsPanel);
这将在缩短版本中解决它,但最好不要学习一口或一部分,而是学习所有关于布局管理器的知识,因为它们对 swing 非常重要,这里是开始 A Visual Guide to Layout Managers。
pack()
方法不是必需的,但它是获取完美尺寸的好方法,从评论中可以看出这是个好主意,但问题是你的布局 是 FlowLayout
这是面板的默认设置,但您应该在更改布局后执行此操作。
我正在 Java 制作扫雷的克隆版。一切都很好,但我想在顶部添加一个计数器。现在,一些按钮不在屏幕上。我必须更改哪些布局才能修复它?
添加计数器之前: (https://i.imgur.com/cSKmCGr.jpg)
添加后"counter" (https://i.imgur.com/fbMQqQz.jpg)
这是我的代码:
public static JPanel generate() {
i2w = row*row-ilosc_min;
przyc = new Sap[row][row];
JPanel all = new JPanel(); //panel that contains counter and buttons
JPanel licznik = new JPanel(); //Counter
licznik.setBackground(Color.red);
licznik.setPreferredSize(new Dimension(MyFrame.wym-50, 50)); //counter takes 50 px height and full width of frame
all.add(licznik);
JPanel panel = new JPanel(); //Buttons panel
panel.setVisible(true);
panel.setLayout(new GridLayout(row, row));
for(int x = 0; x < row; x++) { //creating buttons
for(int y = 0; y < row; y++) {
Sap sp = new Sap(x, y); //My buttons that extends JButton
przyc[x][y] = sp;
panel.add(sp); //Adding button to panel
}
}
all.add(panel); //All contains counter and buttons
return all; //Returning it
}
当我不创建计数器面板时,按钮就像第二张照片中那样。
抱歉有任何错误,英语不是我的主要语言。
首先您知道您的两个面板的默认布局是什么吗?
最短的工作解决方案是使根面板使用 BorderLayout
并在根面板对象上添加计数器调用时
add(BorderLayout.NORTH,theCounterObject);
对于按钮的面板,也在根面板上调用它
add(BorderLayout.CENTER,theButtonsPanel);
这将在缩短版本中解决它,但最好不要学习一口或一部分,而是学习所有关于布局管理器的知识,因为它们对 swing 非常重要,这里是开始 A Visual Guide to Layout Managers。
pack()
方法不是必需的,但它是获取完美尺寸的好方法,从评论中可以看出这是个好主意,但问题是你的布局 是 FlowLayout
这是面板的默认设置,但您应该在更改布局后执行此操作。