[英]Populate jTable from ArrayList<String>, without creating a new class.
我有一個Web服務,該服務從數據庫返回ArrayList<String>
。 我需要使用該ArrayList
填充客戶端Java應用程序上的jTable
。 如何組織ArrayList
,以便在表格的正確行中顯示? 當前,它返回用逗號分隔的每個元素。
這是WebMethod位:
@WebMethod(operationName = "ListCustomers")
public ArrayList ListCustomers() {
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/BankDB", "bankadmin", "bankadmin");
Statement st = con.createStatement();
PreparedStatement prst = con.prepareStatement("select Name, AccountNumber from CUSTOMERS");
ArrayList<String> list = new ArrayList<>();
ResultSet rs = prst.executeQuery();
while(rs.next()){
String nm = rs.getString("Name");
String an = rs.getString("AccountNumber").toString();
list.add(new String (nm));
list.add(new String (an));
}
return (ArrayList) list;
}
catch(SQLException ex){
System.err.println(ex.getMessage());
return null;
}
catch (ClassNotFoundException ex) {
Logger.getLogger(BankServerService.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("second");
return null;
}
finally{
if(st != null){
try {
st.close();
}
catch(SQLException ex){
System.out.println("Could not close statement");
}
}
}
}
返回:
[TestName1, 46484654897, Name2, 646543543, emp3, 534354354]
客戶端節點看起來像這樣,我用另一種方法運行:
listCustomers();
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
Object rowData[] = new Object[listCustomers().size()];
for (int i=0; i<listCustomers().size(); i++){
rowData[i] = listCustomers().get(i);
model.addRow(rowData);
}
這僅將TestName1, 46484654897,
填充為10行。
我需要在表的第一列的單獨行上顯示TestName1, Name2, emp3,
並在第二列的單獨行上顯示46484654897, 646543543, 534354354
。
如果您的目標是將每個姓名/帳號組合放在自己的行上,但是將它們全部放在一個列表中,則需要做一些不同的事情。
listCustomers();
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
for(int i = 0; i < listCustomers.size(); i+=2){
Object[] rowdata = new Object[] {listCustomers.get(i), listCustomers.get(i+1)};
model.addRow(rowdata);
}
每次將i加2,因為您只關心名稱+帳號組合,並且它成對出現。
其次,您只想將包含該行所需數據的model.addRow傳遞給對象數組。 您要向listcustomer中添加每個字符串,然后將整個數組作為一行添加到模型中。
在上面,我只是在for循環內添加了一個新的rowdata對象數組,並使用i(名稱)上的值和i + 1(帳號)上的值填充了該數組。 請記住,如果由於某種原因缺少姓名或帳號,這將不同步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.