需要有关 JTable 的帮助吗?

Posted

技术标签:

【中文标题】需要有关 JTable 的帮助吗?【英文标题】:Need help about JTable? 【发布时间】:2015-04-14 11:30:16 【问题描述】:

我不知道如何说明我的问题,因为我想不出确切的词。

但我会尽量具体。

我在做什么:

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

我的问题: 在我的应用程序中,每当用户单击 JButton 时,代码都会从 JTable 中获取条目并将它们提交到数据库(即我在 JButton 的 actionlistener 中添加了数据库操作)。

问题在于,每当用户在 JTable 的单元格中键入一个条目并且没有点击“输入”或选择另一个“行”时,代码就不会获取该条目。

我会尽量具体:

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

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

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

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

我不知道描述这个问题或问题的确切词语,所以我无法正确地提出问题。

谢谢!

【问题讨论】:

请少一些感叹号 按照您的要求,我做到了。 【参考方案1】:

收集模型更改并按下按钮生成您的 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
);

【讨论】:

【参考方案2】:

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

更多信息可以在这里找到 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

【讨论】:

以上是关于需要有关 JTable 的帮助吗?的主要内容,如果未能解决你的问题,请参考以下文章

需要有关与 jython 、 django 和 java 混淆的帮助

JTable动态更改行高[重复]

如何在 JTable 中添加行?

JTable 未更新

如何在 JTable 中拖放一行?

优化 JDBC 中对 JTable 的数据调用