我有一个具有所需值的JTable。编辑单元格后,如果我使用table.getvalue(row,column),我会得到之前未改变的值。但如果我在单击保存按钮之前选择另一个单元格,我会得到修改后的值。谁能帮我解决这个问题?
PS:我还没有为表添加任何actionlisteners
答案 0 :(得分:1)
默认更新机制仅在单元格编辑器失去焦点时更改模型。从小区中跳出标签或点击不同的小区将导致重要的焦点丢失"触发模型更改的事件
您可以添加ActionListener
(请参阅http://download.oracle.com/javase/tutorial/uiswing/components/textfield.html)。按RETURN时会触发它。在处理程序中,调用fireEditingStopped()来触发"复制到模型"代码(见http://download.oracle.com/javase/tutorial/uiswing/components/table.html#editor)。
或将以下代码添加到您的表格中,
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
答案 1 :(得分:0)
尝试TableModel
。
每个表对象都使用表模型对象来管理实际的表数据。表模型对象必须实现TableModel接口。如果程序员没有提供表模型对象,JTable会自动创建DefaultTableModel的实例。
表模型可以有一组侦听器,每当表数据发生更改时都会通知这些侦听器。听众是TableModelListener的实例。
答案 2 :(得分:0)
你试过这个吗?
int row = table.getSelectedRow(); int column = table.getSelectedColumn();
table.getValue(行,列)
如果是,则需要使用TableModel