在对绑定到它的JTable进行更改后更新数据库

时间:2015-05-15 16:35:20

标签: java swing jdbc jtable listener

我正在使用NetBeans开发JAVA项目。

我使用MysqlDB表绑定JTable。我希望能够通过更改JTable的单元格来更改DB。我怎样才能做到这一点?我试图测试动作监听器,但它不起作用。

 public void TableListener()
    {
    BookList.getModel().addTableModelListener(new TableModelListener() {
//BookList is the name of the JTable.
                    @Override
                    public void tableChanged(TableModelEvent tme) {
                        TableModel tm = (TableModel)tme.getSource();
                        System.out.println(tm.getColumnCount()+" Hi");
                        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                    }
                });
    }

我在JFrame类中创建了这个方法,并在main方法中调用它。它不应该更新数据库,但我只是想知道它是否正常工作。 tm.getColumnCount未被打印。

如果使用听众是错误的,请告诉我正确的方法。

1 个答案:

答案 0 :(得分:0)

好的设计原则说你应该使用一个单独的类(称为DAO或"数据访问对象")来处理与DB的通信。这有助于区分应用程序的问题,并使代码保持清洁和易懂。

您可以使用类似于您的方式的侦听器来调用适当的DAO方法来处理数据库上的CRUD操作。

至于为什么你的TableModelListener没有按预期工作,你已经以一种奇怪的方式设置它,这可能会导致你的问题。请尝试参考此页面:https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

请注意,您在TableListener类中定义了一个匿名TableListener:BookList.getModel().addTableModelListener(new TableModelListener() {...}您可以这样做,但是编写代码示例来自的TableListener没有意义。

基本上,您的问题是您尝试在侦听器类中绑定和使用侦听器。监听器类应该只定义监听器的行为。然后,您应该将侦听器添加到侦听器类的JTable 外部。我想这会解决你的问题。