您可以通过两种方式使用已准备好的基本数据集创建 JTable:
- 2D
Object 数组
- 一个
Vector,其元素为Vector
所以你可以这样做:
Object [][] model = {{"Marrie", "Female","33"},{"John","Male","32"}};
JTable table = new JTable(model);
或者你可以这样做:
Vector model = new Vector();
Vector row = new Vector();
row.add("Marrie");
row.add("Female");
row.add("33");
model.add(row);
row = new Vector();
row.add("John");
row.add("Male");
row.add("32");
model.add(row);
JTable table = new JTable(model);
下一步是实现您自己的TableModel 以利用您组合的DataObject 类(注意Java 类以大写字母开头)。扩展AbstractTableModel 让生活变得轻松,因为您只需要实现三种方法即可开始:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
前两个很简单,您可以获取 Vector 的大小以获取行数,并硬编码 val 以获取列数。 getValueAt 是您从 DataObject 中提取数据的位置
这是一个使用匿名类的示例,扩展 AbstractTableModel。
final Vector<DataObject> myDataObjects = new Vector<DataObject>();
myDataObjects.add(...);// add your objects
JTable table = new JTable(new AbstractTableModel() {
public int getRowCount() {return myDataObjects.size();}
public int getColumnCount() { return 3; }
public Object getValueAt(int row, int column){
switch (column) {
case 0:
return myDataObjects.get(row).getName();
case 1:
return myDataObjects.get(row).getGender();
case 2:
return myDataObjects.get(row).getAge();
default:
return "";
}
}
});
我保留了Vector 以使其接近您当前的实现。在此示例中,您可以轻松地将其更改为 ArrayList,而无需担心。