JTable对象数组

时间:2011-11-09 02:30:35

标签: java user-interface jtable

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

哪个效果不好,我试试谷歌,但大多数例子都有预先制作的阵列,所以没有多大帮助。

2 个答案:

答案 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();
        ....
    }
}

它使您的编程更加简单,因为模型使用您的自然数据结构来保存数据。