将侦听器添加到JButton时的Java NullPointerException

时间:2014-07-07 09:06:57

标签: java swing nullpointerexception jtable actionlistener

我正在Java GUI中显示一个表。用户当前可以通过单击“添加行”按钮向表中添加行,并编辑表中单元格的值。我现在正尝试添加一种方法,通过单击“删除行”按钮从表中删除所选行。

我已将按钮声明为全局变量:

public JButton removeBtn = null;

然后我将侦听器添加到addListeners()方法中的按钮:

private void addListeners(){
    ....
    removeBtn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            int selectedRow = jEntityFilterTable.getSelectedRow();
            DefaultTableModel model = (DefaultTableModel)jEntityFilterTable.getModel();
            model.removeRow(selectedRow);
        }
    });
}

然而,当我现在尝试运行我的代码时,我得到一个NullPointerException,它阻止它运行...例外情况说:

  

线程“main”中的异常java.lang.NullPointerException

它抱怨的是:

removeBtn.addActionListener(new ActionListener(){

(我想这意味着它可能是上面代码中的任何内容,我正在添加ActionListener),

addListeners();

(我正在调用addListeners()方法)和

JConfigurationPane panel = new JConfigurationPane();

(我在我的JConfigurationPane方法中初始化main()。有人能发现我在这里做错了吗?

2 个答案:

答案 0 :(得分:1)

您尚未初始化removeBtn变量。取代

public JButton removeBtn = null;

public JButton removeBtn = new JButton("Remove"); 

在您当前的代码中,在

removeBtn.addActionListener(new ActionListener(){

removeBtn不引用对象,因此没有任何东西可以调用addActionListener方法。因此,您会收到NullPointerException。

答案 1 :(得分:0)

尝试像这样初始化你的按钮:

removeBtn = new JButton("Remove");