我在以JTable的形式在ArrayList中显示数据时遇到一些问题。

ArrayList由数据组成,但是仅当用户在GUI中将数据输入到JTextField中时(此GUI在另一个类中)。我用过getText()。

我的ArrayList在一个类中,但是JTable的JFrame的GUI在另一个类中。我似乎无法在GUI中创建JTable,并且似乎无法从ArrayList中获取要显示在JTable中的数据。

ArrayList由12个JTextField组成,所有JTextField都是字符串,应作为JTable的标题。启动该程序后,用户可以输入所需的次数,这些数据存储在每个标题下的ArrayList中。由于用户一直输入不同的数据,因此这些数据总是不同的,因此,我认为我不能使用此数据:

String[] columnNames = {"First Name",
                    "Last Name",
                    "Sport",
                    "# of Years",
                    "Vegetarian"};

Object[][] data = {
    {"Kathy", "Smith",
     "Snowboarding", new Integer(5), new Boolean(false)},
    {"John", "Doe",
     "Rowing", new Integer(3), new Boolean(true)},
    {"Sue", "Black",
     "Knitting", new Integer(2), new Boolean(false)},
    {"Jane", "White",
     "Speed reading", new Integer(20), new Boolean(true)},
    {"Joe", "Brown",
     "Pool", new Integer(10), new Boolean(false)}
};


你觉得我该怎么做?我应该如何实施呢?

任何帮助深表感谢!

最佳答案

JTable使用TableModel作为其支持模型,您将其提供给JTable构造函数。无论TableModel公开什么,都会显示JTable。支持数据源看起来非常简单,可以使用内置的DefaultTableModel。或者,您可以实现自己的TableModel来包装自己的数据源。

编辑:JTable有一个构造函数,可以直接接受简单的数组数据,您也许可以使用它。

public JTable(Object[][] rowData, Object[] columnNames)


仅供参考,在Java 1.5及更高版本中,您可以将new Integer(123)替换为123,因为编译器会将其自动装箱为Integer.valueOf(123)new Boolean(true)也是如此。

10-01 05:22
查看更多