编译正常,但执行代码时看不到任何内容。我需要改变什么?
我已经删除了我的 Swing/AWT 导入,以便我可以发布问题。代码很短,我的问题也很短,但显然这还不够好......
class Exercise1 {
public static void main(String[] args) {
new MyFrame("Test");
}
}
class MyFrame extends JFrame{
public MyFrame(String title){
super(title);
int i = 2;
int j = 2;
JPanel[][] panelHolder = new JPanel[i][j];
setLayout(new GridLayout(i,j));
for(int m = 0; m < i; m++) {
for(int n = 0; n < j; n++) {
panelHolder[m][n] = new JPanel();
add(panelHolder[m][n]);
}
}
JTextField t1 = new JTextField();
JTextField t2 = new JTextField();
JTextField t3 = new JTextField();
panelHolder[2][0].add(t1);
panelHolder[2][1].add(t2);
panelHolder[2][2].add(t3);
setVisible(true);
}
}
最佳答案
This compiles fine but nothing is visible when it executes the code.
因为你遇到了运行时异常。
数组索引从 0 开始。
int i = 2;
int j = 2;
JPanel[][] panelHolder = new JPanel[i][j];
您创建了一个二维数组,其中每 2 行中有 2 个值的空间。
panelHolder[2][0].add(t1);
panelHolder[2][1].add(t2);
panelHolder[2][2].add(t3);
但是您尝试将组件添加到第三行/值,这会导致异常。
将数组大小更改为 3,或仅使用索引 0 和 1。
此外,当您创建 JTextField 时,请使用:
new JTextField(10);
因此文本字段具有合理的大小。
关于java - 自定义 JFrame 类不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844080/