![](/img/trans.png)
[英]How to show all data from a mysql table in a Java Jtable with ArrayList?
[英]Java: Displaying all data in ArrayList in a table
我在以JTable形式在ArrayList中显示数据时遇到了一些问题。
ArrayList由数据组成,但仅当用户在GUI中将数据输入JTextField时(此GUI在另一个类中)。 我用过getText()。
我的ArrayList在一个类中,但JTable的JFrame的GUI在另一个类中。 我似乎无法在GUI中创建JTable,我似乎无法从ArrayList中获取数据以显示在JTable中。
ArrayList由12个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及更高版本,您可以使用123
替换new Integer(123)
,因为编译器会将此自动装箱到Integer.valueOf(123)
。 new Boolean(true)
。
看来你必须使用TableModel
。
您的程序流程可能如下所示:
ArrayList
(或你持有的任何数据结构)。 TableModel
实例,以您的数据结构为后盾,并将其传递给JTable
。 (如果您使用任何AbstractTableModel.fireTableXXXXX()
方法,则可以在不替换TableModel
情况下完成此操作)。 不确定它是否是正确的做法,但要使ArrayList
和columnNames
静态。
数据数组应拆分为单独的ArrayLists:
ArrayList<String> firstNameAR
ArrayList<String> lastNameAR
ArrayList<String> sportAR
等等。
然后在你的表模型中使用如下:
(最终变量只是从0到n的数字)
public Object getValueAt(int row, int column) {
switch (column) {
case Data.FIRSTNAME:
return Data.firstNameAR.get(row);
case Data.LASTNAME:
return Data.lastNameAR.get(row);
case Data.SPORT:
return Data.sportAR.get(row);
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.