首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java TableRowSorter中的NullPointerException

Java TableRowSorter中的NullPointerException
EN

Stack Overflow用户
提问于 2013-05-22 10:40:44
回答 1查看 515关注 0票数 0

我为清单中的化学品列表创建了一个jtable,其中我可以使用以下代码对每一列进行排序(chemicalTable是jTable的名称):

代码语言:javascript
运行
复制
chemicalTable.setAutoCreateRowSorter(true);
TableRowSorter<TableModel> sorter1 
      = new TableRowSorter<TableModel>(chemicalTable.getModel());
chemicalTable.setRowSorter(sorter1);

然后,我使用jTextfield创建了一个带有keyTyped侦听器的搜索框,这样每当用户键入某个字符时,表就会刷新。而且它通常是有效的。

我在搜索框的keyTypedListener中使用了以下代码:

代码语言:javascript
运行
复制
DefaultTableModel dm = (DefaultTableModel) chemicalTable.getModel();

str = searchChemicalText.getText();

        try {
            String url = "jdbc:mysql://localhost/chemical inventory";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(url, "root", "");


        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Error Occurred.", "Error", JOptionPane.ERROR_MESSAGE);
        }

        int ctr = 0;


        while (ctr < chemicalTable.getRowCount()) {
            chemicalTable.getModel().setValueAt(null, ctr, 0);
            chemicalTable.getModel().setValueAt(null, ctr, 1);
            chemicalTable.getModel().setValueAt(null, ctr, 2);
            ctr++;

        }

        int count = 0;

        try {
            Statement stmt = conn.createStatement();
            String query = "Select * FROM chemicallist where name_of_reagent like '%" + str + "%'";
            ResultSet rs = stmt.executeQuery(query);

            if (rs.next()) {
                rs = stmt.executeQuery(query);

                while (rs.next()) {
                    String qty = null, qtyunit = null, chemstate = null, reagentName = null;

                    reagentName = rs.getString("name_of_reagent");
                    qty = rs.getString("quantity");
                    qtyunit = rs.getString("quantity_unit");
                    chemstate = rs.getString("state");
                    chemicalTable.getModel().setValueAt(reagentName, count, 0);
                    chemicalTable.getModel().setValueAt(qty + " " + qtyunit, count, 1);
                    chemicalTable.getModel().setValueAt(chemstate, count, 2);



                    if (count + 1 > chemicalTable.getRowCount() - 1) {
                        dm.setRowCount(chemicalTable.getRowCount() + 1);
                        dm.fireTableRowsInserted(0, 5);


                    }
                    count++;


                }
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Error Occurred.", "Error", JOptionPane.ERROR_MESSAGE);


        }

我的问题是:每当我首先对任何列(col1、col2或col3)进行排序并在搜索框中插入一个字符时,我都会收到以下错误消息:

“事件调度过程中发生异常: Java.lang.NullPointerException”

EN

回答 1

Stack Overflow用户

发布于 2013-05-22 17:25:40

尽管不可能调试您的代码片段,但有几件事值得注意:

在同一节中,您将TableModel引用为dmchemicalTable.getModel();使用单个引用或验证它们引用的干预setRowCount()的方法是否相同,请使用addRow()方法之一。

  • 更改模型的<代码>D11方法将为您触发正确的事件,表将自动相应地更新事件;您不应自行执行此操作。H212
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16682629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档