使用对象数组初始化表

时间:2011-08-11 14:47:20

标签: java swing multidimensional-array jtable

从使用BD或数组的FOR初始化JTable时遇到问题。

我的问题是示例tableFilterDemo.java,我需要这个函数, 但是当我想要我的BD或arraylist的加载数据时,我遇到了问题。

我需要使用FOR获取所有文件行或表

行来加载对象数组
private Object[][] data = {
    { "Mary", "Campione", "Snowboarding"},
    { "John", "guifru", "skyiin"},};

3 个答案:

答案 0 :(得分:4)

您始终可以使用DefaultTableModel,它使用Vector of Vector来保存TableModel中的数据。因此,对于表中的每一行,您都可以创建一个Vector并将每列添加到Vecter。然后将行Vector添加到第二个Vector。这样您就不需要事先对数组的大小进行硬编码。 Table From Database显示了如何使用此方法。

如果要显示存储在ArrayList中的自定义Oject,也可以始终使用自定义TableModel。 Row Table Model为在ArrayList中存储对象提供了一些常规支持。您还需要查看BeanTableModel以获取完整实现,并进一步了解如何执行自定义实现。

答案 1 :(得分:2)

您有两种方式:

  • 通过调用正确的构造函数(JTable)将对象直接设置为JTable(Object[][] rowData, Object[] columnNames),这非常简单,但只管理静态表
  • 您使用模型,就像您正在讨论的示例中一样:您使用扩展AbstractTableModel的类,您可以在其中覆盖正确的方法,将二维集合映射到正确的行为。

答案 2 :(得分:1)

我不确定我是否理解你的问题。 无论如何,如果您的表有3列并且您已将表模型定义为已定义的here,则必须对数组进行操作并以这种方式将值放入表中:

for(int i=0; i < data.length; i++){
  for(int j=0; j < data[i].length; j++){
    table.setValueAt(data[i][j], i, j);
  }
}

这是方法的声明:     setValueAt(Object aValue,int row,int column)

如果要将arrayList转换为数组,可以:

ArrayList<String> arrayList;
String[] data = new String[arrayList.size()];
data = arrayList.toArray(data);

Bye Luca