gpt4 book ai didi

java - 保存选定的 JTable 行并在另一个 JTable 中显示它们(在另一个 JFrame 中)

转载 作者:行者123 更新时间:2023-12-02 05:56:33 25 4
gpt4 key购买 nike

我有一个包含一些数据的表。我想选择要监视的几行(然后我将在带有自己的表的新 JFrame 中显示这些行) - 让我们将此称为监视记录。

我发现这段代码完全可以做到这一点,但它创建的新表的行数与原始表的行数相同。然而,它确实成功显示了新选定的行,但它从底部向上填充新表。

例如,我的原始表格有 10 行,我选择 3,新表格总共将有 10 行,但只有 8、9 和 10 行填充了所选数据,第 1 到 7 行只有空单元格。

如何让它只显示选定的数据而不显示空行?

public void exportSelectedRows(ActionEvent actionEvent) {
TableModel tableModel = patientTable.getModel();
int[] index = patientTable.getSelectedRows();
Object[] row = new Object[10]; //problem is here that object has size 10 hence the 10 rows?
monitoredPatients = new MonitoredPatients();
monitoredPatients.monitoredPatientsTable = new JTable(row.length, columnNames.length);
DefaultTableModel defaultTableModel = (DefaultTableModel) monitoredPatients.monitoredPatientsTable.getModel();
for (int value : index) {
row[0] = tableModel.getValueAt(value, 0);
row[1] = tableModel.getValueAt(value, 1);
row[2] = tableModel.getValueAt(value, 2);
row[3] = tableModel.getValueAt(value, 3);
row[4] = tableModel.getValueAt(value, 4);
row[5] = tableModel.getValueAt(value, 5);
defaultTableModel.addRow(row);
}
monitoredPatients.add(new JScrollPane(monitoredPatients.monitoredPatientsTable));
}

我希望新表仅显示选定的记录,没有空行。

最佳答案

行=新对象[10];//问题是对象的大小为 10,因此有 10 行?..MonitoredPatients.monitoredPatientsTable = new JTable(row.length, columnNames.length);

那么你有几个问题:

  1. 为什么要创建值为 10 的行数组?行数组表示每一行的数据。您只复制了 6 列数据,因此数组的大小应该仅为 6。

  2. 行数的值应为 0,因为您是从空的 DefaulotTableModel 开始的。然后,您可以使用 addRow(...) 方法添加新的数据行。这使得 TableModel 的大小是动态的。

所以代码应该是:

monitoredPatients.monitoredPatientsTable = new JTable(0, columnNames.length);

或者更好的是,为什么不使用包含列名称的数组创建 TableModel?我确信您不想看到“A、B、C、D、E、F”,如果您只指定列数,这将是默认值。阅读 DefaultTableModel API 以了解要使用的适当构造函数。

关于java - 保存选定的 JTable 行并在另一个 JTable 中显示它们(在另一个 JFrame 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56008422/

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