gpt4 book ai didi

java - 我正在向 JTable 添加一个空行(实现 AbstractTableModel)。如何实时更新我的​​模型?

转载 作者:行者123 更新时间:2023-12-02 07:14:05 26 4
gpt4 key购买 nike

好吧,我想标题就是我在这里要问的全部内容。

我的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);
}

现在,由于我显示了一个空行,我希望用户对其进行编辑,并且我假设用户会这样做。现在,如何确保当用户进行更改时数据保存在我的数组中?或者,如果这不可能,还有什么更好的选择?

好吧,我应该解释一下我想做什么:

enter image description here

我正在从文件加载内容,并显示为表格。现在,用户可以通过单击“添加行”按钮向表中添加新行。每次点击都会添加 1 个空行。 (上图中是按下按钮两次的实例。

现在,我希望用户可以编辑单元格,然后删除一些行(也许),但是单击保存数据库按钮后,表中的更新数据将被存储。

最佳答案

通过比较几种方法您可能会得到更好的理解:

  • 在此example ,后台线程或按钮都可以向表中添加新行。后台线程通过 invokeLater() 对 EDT 上的 Runnable 实例进行排序。它在概念上更容易理解,但也更容易出错。

  • SwingWorker封装对共享数据的排序访问。 APItutorial展示使用 publish()/process() 更新组件模型的基本方法。这种首选机制更加稳健且可扩展。

  • 在这个更高级的 example ,Swing Timer 负责控制一系列 SwingWorker 实例的 Executor

在所有情况下,表格都保持功能。您可以使用任何作为 sscce 的基础.

附录:您能详细解释一下您建议的策略吗?

我更新了示例列表,并建议了一些需要在上下文中查找的内容。

关于java - 我正在向 JTable 添加一个空行(实现 AbstractTableModel)。如何实时更新我的​​模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com