单击JTable中的行时出现NullPointerException

时间:2013-12-13 13:48:29

标签: java swing jtable listselectionlistener

如果我单击Jtable中的第8个空白列,我想激活一个按钮。但是我得到了这个:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at records$1.valueChanged(records.java:57)

这是我的代码:

tb_records.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent event) {

                int row = tb_records.getSelectedRow();
                DefaultTableModel model = (DefaultTableModel)tb_records.getModel();
                String hehe = (String) model.getValueAt(row, 7);

                if(!hehe.equals("")) {
                    b_extend.setEnabled(false);
                }
                else {
                    b_extend.setEnabled(true);
                }
            }
        });

2 个答案:

答案 0 :(得分:2)

(不是答案,我会谈论简单的方法)

  1. ListSelectionMode更改为SINGLE_....,然后只能选择一行,否则您必须在array of selected rows内循环

  2. 测试if (row > -1) ==没有选择行,如果通过则可以

  3. 更快地发布SSCCE,简短,可运行,可编译,以及JTable的硬编码值

答案 1 :(得分:1)

我对您的代码进行了一些更改,可能会有所帮助。

.(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent e) {

            if (! e.getValueIsAdjusting() ) {
              ListSelectionModel d = (ListSelectionModel)e.getSource();
              if(d.getLeadSelectionIndex() != -1){
                   String hehe = (String) model.getValueAt(d.getLeadSelectionIndex(), 7);
                   b_extend.setEnabled("".equals(hehe));
              }
            }

            }
        });