我在以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)
也是如此。