监听JTable单元格值的更改并相应更新数据库的最佳方法是什么?

Igo*_*gor 9 java swing jtable listener tablemodel

我正在使用多个构建和应用程序,JTables我需要检测何时发生单元格值更改,以便我可以在数据库中更新它.我尝试TableModelListener并覆盖tableChanged,但只有在我编辑完单元格后单击(单击另一行)才会触发.

还有其他办法吗?

tra*_*god 17

您可以实现该CellEditorListener接口,如此示例所示.请注意,JTable它本身就是一个CellEditorListener.

它也可以方便地终止编辑丢失焦点时,如图所示在这里:

table.putClientProperty("terminateEditOnFocusLost", true);
Run Code Online (Sandbox Code Playgroud)

可以在此处找到更多Swing客户端属性.


Nic*_*ppe 5

我同意@mKorbel - 除非您的所有输入都是复选框和下拉菜单,否则您将需要等到单元格编辑停止(您不想每次在一个字母中输入一个字母时都提交到数据库)文本框)。

如果问题是在焦点转移到另一个组件后它没有提交,请添加一个FocusListener当焦点在表上丢失时停止编辑表的方法:

例子:

final JTable table = new JTable();
table.addFocusListener(new FocusAdapter() {
    @Override
    public void focusLost(FocusEvent e) {
        TableCellEditor tce = table.getCellEditor();
        if(tce != null)
            tce.stopCellEditing();
    }
});
Run Code Online (Sandbox Code Playgroud)