首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新Jtable

刷新Jtable
EN

Stack Overflow用户
提问于 2009-01-29 09:29:28
回答 2查看 22.6K关注 0票数 4

我有一个从向量创建的JTable。如何刷新JTable以显示添加到矢量中的新数据?

EN

回答 2

Stack Overflow用户

发布于 2009-01-29 09:37:44

当TableModel发生更改时,您的JTable应该会自动更新。我在这里跳了一步,但我猜你并没有使用你自己的TableModel,而只是用你的Vector调用了JTable构造函数。在这种情况下,您可以在TableModel上获取一个钩子并将其转换为DefaultTableModel,然后调用其中一个通知方法来让JTable知道更改,如下所示:

代码语言:javascript
复制
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.fireTableChanged(new TableModelEvent(........));

我真的会建议使用你自己的TableModel,除非这是非常琐碎的事情,但你正在更新数据的事实表明它不是。

请查看working with tables上的sun教程,特别是关于listening for data changes的部分。

这可能看起来像是更多的前期工作,但从长远来看,它将为您省去很多令人头疼的事情,并且是正确的方法。

票数 17
EN

Stack Overflow用户

发布于 2011-11-02 23:54:37

我先调用initTable方法,然后调用loadTable()。我相信还有很多其他的方法,但这就像acharm一样。

代码语言:javascript
复制
private void initBerkheimerTable() {
        tblBerkheimer = new JTable();
        tblBerkheimer.getSelectionModel().addListSelectionListener(new SelectionListener());
        tblBerkheimer.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        tblBerkheimer.setModel(new DefaultTableModel(
            new Object[][] {
            },
            new String[] {
                "Id", "Name", "Berkheimer PSD", "Rate", "Current PSD", "Current Rate"
            }
        ) {
            Class[] columnTypes = new Class[] {
                String.class, String.class, String.class, String.class, String.class, String.class
            };
            public Class getColumnClass(int columnIndex) {
                return columnTypes[columnIndex];
            }
            boolean[] columnEditables=new boolean[]{false,false,false,false,false,false,false,false,false,false};
            public boolean isCellEditable(int row, int column) {
                return columnEditables[column];
            }
        });
        scrollPane.setViewportView(tblBerkheimer);
        add(scrollPane);
    }

private void loadTable(){
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            PayrollPsdAuditing.payroll=Database.connectToSQLServerDataBase(PayrollPsdAuditing.payrollIni);
            ps=PayrollPsdAuditing.payroll.prepareStatement(
                "SELECT a.EMPLOYID, " +
                "   a.NAME, " +
                "   a.PSD_CODE, " +
                "   a.RATE, " +
                "   b.STRINGS_I_2 as CURRENT_PSD, " +
                "   c.lcltaxrt as CURRENT_RATE " +
                "FROM PYRL_PSD_VALIDATION a, " +
                "   EX010130 b, " +
                "   UPR41400 c " +
                "WHERE a.employid=b.empid_i " +
                "   AND c.localtax=b.strings_i_2");
            rs=ps.executeQuery();
            while(rs.next()) {
                Swing.fillJTable(tblBerkheimer,
                        new String[]{rs.getString("EMPLOYID").trim()
                            ,rs.getString("NAME").trim()
                            ,rs.getString("PSD_CODE").trim()
                            ,String.valueOf(rs.getDouble("RATE"))
                            ,rs.getString("CURRENT_PSD").trim()
                            ,String.valueOf(rs.getDouble("CURRENT_RATE")/100000)});
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            Database.close(PayrollPsdAuditing.payroll);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/491005

复制
相关文章

相似问题

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