Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ArrayList填充jTable<;字符串>;,不创建新类。_Java_Arraylist_Netbeans_Jtable_Jax Ws - Fatal编程技术网

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);
}