gpt4 book ai didi

java - 将 JTable 中的行添加到另一个 JTable

转载 作者:行者123 更新时间:2023-12-01 13:07:31 26 4
gpt4 key购买 nike

我正在进行项目的最后一部分,这是我遇到的最后问题之一。这部分用于编辑预订,即更改为特定预订预订的房间。我有 2 个 JTable,其中一个有可用房间,另一个有已预订的房间。两者都有单独的 DefaultTable 模型和 2D 对象数组。我在两个表之间有一个添加和删除按钮,可以交换您选择的行。

问题是它对于第一次添加/删除工作正常,但我认为我没有刷新 2D 数组。在第二次尝试添加另一行时,模型仍然引用原始的二维数组,因为我没有从二维数组中删除该行,因此它给了我错误的行数据。

是否有更简单的方法使用 JTable/model 方法来解决此问题,而不是创建临时 2D 对象数组来排除所选行?

下面的示例代码显示了 ActionPerformed 代码。

if(e.getSource().equals(addRow)){ 
System.out.println(tableLeft.getSelectedRow());
if(tableLeft.getSelectedRow() == -1){ //if no row selected

}
else{
model.insertRow(tableRight.getRowCount(),array2dLeft[tableLeft.getSelectedRow()]);
modelLeft.removeRow(tableLeft.getSelectedRow());
modelLeft.fireTableRowsDeleted(tableLeft.getSelectedRow(),tableLeft.getSelectedRow());
txtTotalCost.setText("€" + getTotalCost());
}
}
if(e.getSource().equals(removeRow)){
if(tableRight.getSelectedRow() == -1){ //if no row selected
}
else{
modelLeft.insertRow(tableLeft.getRowCount(),array2dLeft[tableRight.getSelectedRow()]);
model.removeRow(tableRight.getSelectedRow());
txtTotalCost.setText("€" + getTotalCost());
}
}
}

最佳答案

but I think I'm not refreshing the 2D array.

您不应该访问二维数组。该数组只能用于最初将数据加载到表模型中。然后您可以将 Array 变量设置为 null,这样您就不会想再次使用它。

之后,所有更新都应直接在 TableModel 上完成,使用 addRow()removeRow() DefaultTableModel的方法。

您还需要使用getValueAt(...) TableModel 的方法从模型中获取数据,以便您可以创建行数据的 vector (或数组)并对数据使用 addRow() 方法。

关于java - 将 JTable 中的行添加到另一个 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158133/

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