需要有关 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 的帮助吗?的主要内容,如果未能解决你的问题,请参考以下文章