Java 如何将ArrayList添加到jtable?
我一直在开发一个返回arraylist的web服务。如何将返回的arraylist添加到jtable并显示Java 如何将ArrayList添加到jtable?,java,swing,web-services,arraylist,glassfish,Java,Swing,Web Services,Arraylist,Glassfish,我一直在开发一个返回arraylist的web服务。如何将返回的arraylist添加到jtable并显示 ArrayList customerDetails = new ArrayList(); try { String sqlQuery = "SELECT * FROM customer WHERE AccountNumber="+accountNumber; PreparedStatement stmt = DatabaseConnectio
ArrayList customerDetails = new ArrayList();
try {
String sqlQuery = "SELECT * FROM customer WHERE AccountNumber="+accountNumber;
PreparedStatement stmt = DatabaseConnection.dBconn().prepareStatement(sqlQuery);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
customerDetails.add(rs.getString("Name"));
customerDetails.add(rs.getString("DoB"));
customerDetails.add(rs.getString("Address"));
customerDetails.add(rs.getString("Mobile"));
customerDetails.add(rs.getString("Email"));
customerDetails.add(rs.getString("AccountType"));
customerDetails.add(rs.getString("AccountNumber"));
customerDetails.add(rs.getString("SortCode"));
customerDetails.add(rs.getString("Balance"));
customerDetails.add(rs.getString("Card"));
}
return customerDetails;
} catch (SQLException err) {
System.out.println(err.getMessage());
}
return customerDetails;
让我们从以下事实开始:您的
ArrayList
不是按行/列分组的结构,您需要在列表
中有一个列表,其中外部列表是行,内部列表是列值
在进行此操作时,让我们也正确地使用PreparedStatement
,并管理资源,以便在执行此操作时正确地关闭它们
ArrayList<List<String>> customerDetails = new ArrayList<>(25);
String sqlQuery = "SELECT * FROM customer WHERE AccountNumber=?";
try (PreparedStatement stmt = DatabaseConnection.dBconn().prepareStatement(sqlQuery)) {
stmt.setString(1, accountNumber);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
List<String> rowDetails = new ArrayList<>(10);
rowDetails.add(rs.getString("Name"));
rowDetails.add(rs.getString("DoB"));
rowDetails.add(rs.getString("Address"));
rowDetails.add(rs.getString("Mobile"));
rowDetails.add(rs.getString("Email"));
rowDetails.add(rs.getString("AccountType"));
rowDetails.add(rs.getString("AccountNumber"));
rowDetails.add(rs.getString("SortCode"));
rowDetails.add(rs.getString("Balance"));
rowDetails.add(rs.getString("Card"));
customerDetails.add(rowDetails);
}
}
} catch (SQLException err) {
System.out.println(err.getMessage());
}
return customerDetails;
这将使用列表
作为列名,使用列表
作为行数据
就我个人而言,我更喜欢将数据包装到某种普通的旧Java对象(POJO)中,因为它封装了数据,并在显示数据时提供了更大的灵活性(即,如果我不想,我需要显示对象的所有属性)
查看更多详细信息让我们从以下事实开始:ArrayList
不是按行/列分组的结构,您需要在列表
中有一个列表
,其中外部列表是行,内部列表是列值您的问题是将ArrayList添加到JTable,所以试试我一直在开发一个返回arraylist的web服务。
-为什么它会返回arraylist?如果要从数据库获取所有数据,为什么不返回一个包含所有数据的DefaultTableModel
。然后使用表模型创建JTable
。
public class ListTableModel extends AbstractTableModel {
private List<List<String>> rows;
private List<String> columnNames;
public ListTableModel(List<String> columnNames, List<List<String>> rows) {
this.rows = new ArrayList<>(rows);
this.columnNames = columnNames;
}
@Override
public int getRowCount() {
return rows.size();
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
Class type = String.class;
return type;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
List<String> rowData = rows.get(rowIndex);
return rowData.get(columnIndex);
}
}