好的,我认为标题就是我在这里要问的全部。
我的AbstractTableModel
工作正常,当我想添加一个空行时,我使用以下代码执行此操作:
public void addRow() {
Object[][] oldData = data;
data = new Object[oldData.length + 1][3];
// Copy old data to new data
for (int x = 0; x < oldData.length; x++) {
data[x] = oldData[x];
}
// Append new row
data[oldData.length] = new Object[] {"", "", false};
fireTableRowsInserted(data.length - 2, data.length - 1);
}
现在,由于我显示一个空行,我希望用户编辑它,我认为用户会。现在,当用户进行更改时,如何确保数据保存在我的阵列中?或者,如果那不可能,有什么更好的选择呢?
好的,我应该解释一下我想做什么:
我正在从文件加载内容,并显示为表格。现在,用户可以在单击Add Row
按钮时向表中添加新行。这将为每次点击添加1个空行。 (在上图中是按下按钮两次的实例。
现在,我希望用户可以编辑单元格,然后可能删除一些行(可能)但是在单击Save Database
按钮时,表中的更新数据是存储。
答案 0 :(得分:2)
通过比较几种方法,您可以更好地理解:
在此example中,后台线程或按钮可以向表中添加新行。后台线程通过Runnable
在EDT上对invokeLater()
的实例进行排序。它在概念上更容易理解,但也更容易出错。
SwingWorker
封装了对共享数据的排序访问。 API和tutorial显示了使用publish()
/ process()
更新组件模型的基本方法。这种首选机制更加强大和可扩展。
在这个更高级的example中,Swing Timer
可以控制一系列Executor
个实例的SwingWorker
。
在所有情况下,表格仍然有效。您可以使用any作为sscce的基础。
附录:你能解释一下你建议的策略吗?
我已经更新了示例列表,并建议在上下文中查找一些内容。