Java 从ArrayList填充jTable<;字符串>;,不创建新类。
我有一个从数据库返回Java 从ArrayList填充jTable<;字符串>;,不创建新类。,java,arraylist,netbeans,jtable,jax-ws,Java,Arraylist,Netbeans,Jtable,Jax Ws,我有一个从数据库返回ArrayList的Web服务。我需要在客户端Java应用程序上用该ArrayList填充jTable。如何组织阵列列表,使其在表上以正确的行显示?目前它返回每个元素,用逗号分隔 以下是WebMethod位: @WebMethod(operationName = "ListCustomers") public ArrayList ListCustomers() { try{ Class.forName("org.apache.derby.jdbc.Cl
ArrayList
的Web服务。我需要在客户端Java应用程序上用该ArrayList
填充jTable
。如何组织阵列列表
,使其在表上以正确的行显示?目前它返回每个元素,用逗号分隔
以下是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");
}
}
}
}
客户端节点如下所示,我在另一个方法中运行该节点:
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);
}
listCustomers();
DefaultTableModel=(DefaultTableModel)jTable1.getModel();
对象行数据[]=新对象[listCustomers().size()];
对于(int i=0;i如果您的目标是将每个姓名/账号组合放在自己的行中,但您将它们都放在一个列表中,那么您需要做一些不同的事情
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);
}
listCustomers();
DefaultTableModel=(DefaultTableModel)jTable1.getModel();
对于(int i=0;i
每次增加2个i,因为您只关心name+account number组合,它是成对的
其次,您只想将model.addRow传递给对象数组,其中包含您希望该行的数据。您将listcustomer中的每个字符串添加到该数组中,然后将整个数组作为一行添加到模型中
上面我刚刚在for循环中添加了一个新的rowdata对象数组,并用I处的值(名称)和I+1处的值(帐号)填充它。请记住,如果由于某种原因缺少名称或帐号,这将失去同步。澄清:您是否试图创建一个包含名称和帐号的表,每行1个?因此:testname1、46484654897位于第一行,name2、646543543位于第二行,等等?正确,这就是目标。
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);
}