java - 自定义 JFrame 类不出现

标签 java swing jframe jpanel awt

编译正常,但执行代码时看不到任何内容。我需要改变什么?

我已经删除了我的 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/

相关文章:

java - 从自定义 JOptionPane 返回值,Java

java - 使用 jList 中所选对象的信息

java - 如何在类(class)中单独更新外观和感觉干净?

Java Swing JFrame dispose 方法

java - 如何使 JFrame 窗口仅在我按下前一个 JFrame 窗口的 JButton 后才出现?

java - 在 postgresql 中使用文本类型列转义双引号并通过 jackson 解析 json

java - JaNeLA 的 JNLP 错误

java - 分割字符串[]

java - 如何将一个ArrayList(第一层)添加到另一个ArrayList(第二层),但每次添加时第一层ArrayList的大小都不同

java - 我的 JFrame 不显示表盘的输出