我正在将一个JTable中的对象添加到另一个JTable中,我可以通过调试看到,在CustomTableModel中,对象被添加到对象列表中。只有我添加的第一个对象显示在新的JTable中。
所以我可以向TableModel添加许多对象,但只有第一个出现在JTable中。
这是我的添加方法:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// TODO add your handling code here:
if(physPackageModel != null){
int h = secRowSeat2.getSelectedRow();
Physical_Package pp = PpackageList.get(h);
if(physPackageModel2 != null){
physPackageModel2.addRow(pp);
physPackageModel.removeRow(h);
}
else{
physPackageModel2 = new tableModel2();
physPackageModel2.addRow(pp);
physPackageModel.removeRow(h);
}
secRowSeat1.setModel(physPackageModel2);
}
else{
int h = secRowSeat2.getSelectedRow();
EventSeat es = eventSeatList.get(h);
if(eventSeatModel2 != null){
eventSeatModel2.addRow(es);
eventSeatModel.removeRow(h);
}else{
eventSeatModel2 = new EventTableModel2();
eventSeatModel2.addRow(es);
eventSeatModel.removeRow(h);
}
secRowSeat1.setModel(eventSeatModel2);
secRowSeat2.setModel(eventSeatModel);
repaint();
}
}
如果您想查看我的自定义表型号,请告诉我.....
在customTableModel中添加和删除方法:
public void addRow(Physical_Package rowData)
{
insertRow(getRowCount(), rowData);
}
public void insertRow(int row, Physical_Package rowData)
{
modelData.add(row-1, rowData);
fireTableRowsInserted(row, row);
this.fireTableDataChanged();
}
public void removeRow(int row)
{
modelData.remove(row);
fireTableRowsDeleted(row, row);
}
答案 0 :(得分:1)
你应该让表听众了解更改,例如在AbstractTableModel中调用fireTableRowsInserted()或fireTableRowsDeleted()
答案 1 :(得分:1)
如果我正确理解您的代码,您每次移动项目时都会设置一个新模型。 在添加/删除项目时,您应该保留模型并调用相应的fireXxx()方法。
答案 2 :(得分:1)
public void insertRow(int row, Physical_Package rowData)
{
modelData.add(row-1, rowData);
fireTableRowsInserted(row, row);
this.fireTableDataChanged();
}
从我昨天给你的工作TableModel复制代码那么多。那不是我给你的代码。
我不明白为什么你需要检查是否存在表模型。您应始终创建并显示包含表模型的表,即使该表不包含任何行。