在JTable中显示ArrayList数据



这里我有一个名为vehicles的数组列表,其中有几个数据类型为AutoRickshaw和ElectricScooter的项目,在下面的代码中,我将制作两个不同的jtable来显示AutoRickshaw和ElectricScooter的数据。然而,这个表循环到vehicles.size(),导致创建空行(其中将包含ElectricScooter的数据)。输出显示在这里,输入图像描述在这里。我希望这些空行不显示或被删除。

for (int i = 0; i < vehicles.size(); i++) {
if (vehicles.get(i) instanceof AutoRickshaw) {
autoRickshaw = (AutoRickshaw) vehicles.get(i);
for (int j = 0; j < columns.length; j++) {
data[i][j] = autoRickshaw.getVehicleId();
data[i][j] = autoRickshaw.getVehicleName();
data[i][j] = autoRickshaw.getVehicleWeight();
data[i][j] = autoRickshaw.getVehicleColor();
data[i][j] = autoRickshaw.getVehicleSpeed();
data[i][j] = autoRickshaw.getEngineDisplacement();
data[i][j] = autoRickshaw.getTorque();
data[i][j] = autoRickshaw.getNumberOfSeats();
data[i][j] = autoRickshaw.getFuelTankCapacity();
data[i][j] = autoRickshaw.getGroundClearance();
}
}
}

您可以通过使用DefaultTableModel来简化这一点。它有一个addRow方法,你可以用它来添加行。

https://docs.oracle.com/javase/7/docs/api/javax/swing/table/DefaultTableModel.html addRow (java . lang . object [])

你也可以通过为不同类型的车辆创建单独的列表,然后创建所需大小的单元格数据对象[][]来解决这个问题。