将一组文本按钮添加到网格中

时间:2014-03-22 02:04:21

标签: java swing nullpointerexception jbutton grid-layout

我不确定我在这里做错了什么,我想创建一个网格布局 使用Jbutton数组,但它给了我一个“空指针异常”。不能 似乎找到了如何将JButton放在面板上。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GridLayout extends JFrame
{
private final int HEIGHT = 200;
private JPanel panel;
private final int WIDTH = 200;

public GridLayout ()
{
    setTitle( " try this");
    setSize( HEIGHT, WIDTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setLayout(new FlowLayout());

    JButton [] but = new JButton [9];

    for(int i = 0; i < 9; i++ )
    {
            but[i]=new JButton();   
    }
    for ( int i = 0; i < 9;i++)
    {
        panel.add(but[i]);
    }

    setVisible(true);
}

public static void main(String[] arg)
{
    new FlowWindow();
}   
}

1 个答案:

答案 0 :(得分:3)

在哪里为面板变量创建JPanel对象?

答案:你没有。所以改变这个:

private JPanel panel;

到此:

private JPanel panel = new JPanel();

更重要的是,您需要学习如何调试NPE(NullPointerException)的一般概念。您应仔细检查抛出它的行,找出哪个变量为null,然后追溯到您的代码以查看原因。你会一次又一次地碰到这些,相信我。


顺便说一句:不要给你的类提供与重要核心Java类相同的名称。例如,通过命名类GridLayout,您现在将无法使用java.awt.GridLayout类而无需完全指定类名。因此,您需要将您的班级名称更改为其他名称,例如MyGridLayout