需要帮助JTable?

时间:2015-04-14 11:30:16

标签: java swing jdbc jtable actionlistener

我不知道如何指定我的问题,因为我无法考虑确切的词语。

但我会尝试尽可能具体。

我在做什么:

我正在创建一个数据库应用程序,它使用JTable来获取用户数据并将其提供给数据库。

我的问题: 在我的应用程序中,只要用户点击JButton,代码就从JTable中获取条目并将它们提交给数据库(即我已经在JButton的actionlistener中添加了数据库操作)。

问题在于,只要用户在JTable的单元格中输入一个条目并且没有按下"输入"或者选择另一个"行",代码不会获取该条目。

我会尝试具体:

我想说的是假设用户在第一行的第二列上打字,他立即点击JButton而没有在JTable的单元格上输入或选择不同的行,那么

 model.getValueAt(0,1).toString ///is returning null because intially nothing was there.

但是,如果按下Enter键或选择了不同的行,则会产生输入的值。

那么,如何在按下JButton的同时将所有输入的值输入到JTable的单元格中。

我并不知道描述这个问题或问题的确切词语,所以我无法正确构建问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

收集模型更改并按下按钮按下SQL。

TableModel model = table.getModel();
model.addTableModelListener(new TableModelListener() {
    @Override
    public void tableChanged(TableModelEvent e) {
        ... e.firstRow, e.lastRow
    }
});

或者在Java 8中

model.addTableModelListener((e) -> {
    ... e.firstRow, e.lastRow
});

答案 1 :(得分:1)

您可以尝试一些简单的操作,例如添加fireTableDataChanged(),其中..."通知所有侦听器表格行中的所有单元格值都可能已更改" 您可以在JButton Action侦听器中调用它,也可以在表中实现Lose Focus Listener。

可在此处找到更多信息 http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html

https://docs.oracle.com/javase/tutorial/uiswing/events/focuslistener.html

最后,可以在此处找到可能对您有帮助的更深入的答案 How to refresh data in JTable I am using TableModel