我目前有一个学生对象列表,我需要将其转换为Object [] [],以便我可以将数据附加到GUI中的JTable中,我有点迷失了如何在一种有效/动态的方式。
我没有写下任何内容发布到此处,我可以向您提供数据的详细信息:
List<Student> myStudents = new ArrayList<>();
需要以某种方式变形为:
Object[][] data = {{...}};
每个学生都有11个要添加的字段,所以它会转到Object [i] [0 ... 10]
所有这一切的替代方法是以某种方式找到一种方法在List<Student>
内传递new JTable(data, columnNames)
而不是Object[][]
要么解决这个问题,要么解决这个问题
答案 0 :(得分:3)
可能类似的东西,你不会变得更简单,除非有关于学生的了解
List<Object[]> props = new ArrayList<>();
for (Student student : myStudents) {
Object[] std = new Object[11];
std[0] = student.whatever;
// Complete the object
props.add(std);
}
return props.toArray();
答案 1 :(得分:1)
我不是JTable的专家,所以这可能不是最好的解决方案。
Object[][] data = new Object[myStudents.size()][11];
for(int i = 0; i < myStudents.size(); i++) {
data[i][0] = myStudents.get(i).firstProperty;
data[i][1] = myStudents.get(i).secondProperty;
// continue
}
答案 2 :(得分:1)
所有这一切的替代方法是以某种方式找到一种在新的JTable(data,columnNames)中传递List的方法
这是更好的方法。您永远不应该尝试保留两份数据。所有数据只应存储在TableModel中。这意味着您需要创建一个自定义TableModel来保存Student对象。
查看Row Table Model以获取可支持任何自定义Object的TableModel的基本实现。您需要实现几种方法来支持您的学生对象。 JButtonTableModel
示例向您展示了如何做到这一点。