我试图将这两个 JPanel
添加到 JFrame
中,但是只显示框架,没有添加任何内容。任何人都可以帮助我添加这些面板时缺少什么?
import javax.swing.*;
import java.awt.GridLayout;
public class grid_Base extends JFrame {
JFrame mainp = new JFrame();
JPanel p = new JPanel();
JPanel p2 = new JPanel();
clickButtons buttons[] = new clickButtons[100];
public grid_Base() {
super("Battleship");
mainp.setSize(800, 1500);
mainp.setResizable(true);
mainp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainp.setVisible(true);
p.setLayout(new GridLayout(10, 10));
for (int i = 0; i < 100; i++) {
buttons[i] = new clickButtons();
p.add(buttons[i]);
}
mainp.add(p);
p2.setLayout(new GridLayout(10, 10));
for (int i = 0; i < 100; i++) {
buttons[i] = new clickButtons();
p2.add(buttons[i]);
}
mainp.add(p2);
}
}
最佳答案
- 创建 UI 后,始终最后调用
setVisible(true);
JFrame
使用BorderLayout
作为默认布局,因此使用mainp.add(p)
然后使用mainp.add(p2)
将隐藏p
,因为只有p2
会被布局...- 不要从
JFrame
扩展(特别是因为您已经有了JFrame
的实例字段),这只会让事情变得更加困惑... - 通读一下 Code Conventions for the Java TM Programming Language ,这将使人们更容易阅读您的代码,也让您更轻松地阅读其他人
- 您的第二个循环将覆盖第一个循环生成的内容,这意味着当您尝试从数组中查找按钮时,您将只能找到在第二个循环中创建的按钮,而不能找到第一个循环中创建的按钮......
关于java - 尝试将多个 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581332/