There are two ways you can create a JTable with a basic, prepared dataset:
- a 2D
Object
array
- a
Vector
whose elements are Vector
so you can do this:
Object [][] model = {{"Marrie", "Female","33"},{"John","Male","32"}};
JTable table = new JTable(model);
or you could do this:
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);
The next step would be to implement your own TableModel
to utilize the DataObject
class that you have put together (note that Java classes start with caps). Extending AbstractTableModel
makes life easy, as you only need to implement three methods to get started:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
the first two are easy, you can get the size of your Vector
for row count and hard-code the val for column count. getValueAt
is where you pull the data from your DataObject
Here is an example using an anonymous class, extending 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 "";
}
}
});
I have kept the Vector
so as to keep it close to your current implementation. You can easily change that to an ArrayList in this example without any worries.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…