String[] columnNames = {"Type", "Employee ID", "First/Last Name","DOB", "Gender", "HIre Date", "OnCall", "BaseSalary", "Commission/Hourly Rate"};
Object[][] data = new Object[10][9];
table = new JTable(data,columnNames);
public ArrayList<Person> employeeList = new ArrayList<Person>();
public ArrayList<Client> clientList = new ArrayList<Client>();
public ArrayList<Stock> stockList = new ArrayList<Stock>();
我正在尝试使用数组列表中的信息创建一个JTable。我尝试了一些类似的东西。
data[0][0] = "Account";
data[0][1] = 1; //int
data[0][2] = "Name";
data[0][3] = dob; //Date class
data[0][4] = gender; //Enum
data[0][5] = hire //Date class
data[0][6] = true; //boolean
data[0][7] = 125.23; //double
data[0][8] = 0.015; //double
哪个效果不好,我试试谷歌,但大多数例子都有预先制作的阵列,所以没有多大帮助。
答案 0 :(得分:1)
我认为您的问题在于数据数组。 java中的数组不是动态的。定义
Object[][] data = {};
您正在创建一个长度为0的数组。
您必须事先知道自己的长度并use them in the creation或使用列表的toArray方法。
答案 1 :(得分:1)
JTable模型文档在其简单的解释中令人困惑。将数据传递给表构造函数几乎总是错误的。您应该实现从AbstractTableModel派生自己的表模型,并将该模型对象传递给表的构造函数。
然后你的表模型可以只有一个像
这样的私有成员变量public ArrayList<Person> employeeList = new ArrayList<Person>();
然后你只需要实现一些方法,比如
public int getRowCount() {
return emplyeeList.size();
}
等
public Object getValueAt(int rowIndex, int columnIndex) {
Person p = employeeList.get(rowIndex);
switch (columnIndex) {
case 1:
return p.getName();
....
}
}
等
它使您的编程更加简单,因为模型使用您的自然数据结构来保存数据。