【问题标题】:Update database after making changes on JTable bound to it在对绑定到它的 JTable 进行更改后更新数据库
【发布时间】:2015-05-15 16:35:19
【问题描述】:

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

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

 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 未打印。

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

【问题讨论】:

    标签: java swing jdbc jtable listener


    【解决方案1】:

    良好的设计原则表明您应该使用单独的类(称为 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 outside。我认为这将解决您的问题。

    【讨论】:

    • 我有 DAO 课程。请告诉我你指的方式。
    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2019-04-19
    • 2014-06-11
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多