Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 如何从JTable获取存储的对象_Java_Swing_Jtable - Fatal编程技术网

Java 如何从JTable获取存储的对象

Java 如何从JTable获取存储的对象,java,swing,jtable,Java,Swing,Jtable,我有一个JTable,我可以在其中添加具有多个属性(如年龄、姓名等)的用户。这很有效,用户被添加到我的arraylist和JTable中。 现在我想要的是,当我选择JTable行时,能够获取存储在用户arrayList中的对象,以便修改或删除它们 DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel(); User u = userList.get(jTableUsers.getSel

我有一个JTable,我可以在其中添加具有多个属性(如年龄、姓名等)的用户。这很有效,用户被添加到我的arraylist和JTable中。 现在我想要的是,当我选择JTable行时,能够获取存储在用户arrayList中的对象,以便修改或删除它们

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
下面是我向JTable添加用户时的代码示例:

private void jButtonAddAUserActionPerformed(java.awt.event.ActionEvent evt) {                                                
   User obj=new User();
   obj.setName(jTextFieldName.getText());
   obj.setAdress(jTextFieldAdress.getText());
   obj.setNumCC(Integer.parseInt(jTextFieldNumCC.getText()));
   obj.setTele(Integer.parseInt(jTextFieldTele.getText()));
   obj.setUserName(jTextFieldUserName.getText());
   obj.setPassword(jTextFieldPassword.getText());

   DefaultTableModel model=(DefaultTableModel) jTableUsers.getModel();
   model.addRow(new Object[]{
       jTextFieldName.getText(),
       jTextFieldAdress.getText(),
       jTextFieldTele.getText(),
       jTextFieldNumCC.getText(),
       obj.isAdmin
   });

   usersList.add(obj);
   JOptionPane.showMessageDialog(null,"Data inserted correctly.");
   jTextFieldName.setText("");
   jTextFieldAdress.setText("");
   jTextFieldNumCC.setText("");
   jTextFieldTele.setText("");
   jTextFieldPassword.setText("");
   jTextFieldUserName.setText("");
}   
    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
编辑: 以下是用于删除已在工作的用户的代码:

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
私有void JButtonRemoveActionPerformed(java.awt.event.ActionEvent evt){

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
下面是更新仍不工作的用户的代码,我正在尝试从jTextFields更新它:

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
private void jButtonUpdateActionPerformed(java.awt.event.ActionEvent evt) {                                                  

    DefaultTableModel model = (DefaultTableModel) jTableUsers.getModel();
    userList.get(jTableUsers.getSelectedRow());
    model.setValueAt(jTextFieldName.getText(), jTableUsers.getSelectedRow(),0);
    model.setValueAt(jTextFieldAdress.getText(), jTableUsers.getSelectedRow(),1);
    model.setValueAt(jTextFieldPhone.getText(), jTableUsers.getSelectedRow(),2);
    model.setValueAt(jTextFieldNumCC.getText(), jTableUsers.getSelectedRow(),3);
    User u =userList.get(jTableUsers.getSelectedRow());

    JOptionPane.showMessageDialog(null,"Data updated.");

}   

有人能在这方面给我一些帮助吗?谢谢!

你可以使用类似的东西。遗憾的是,你没有指定如何编辑用户

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
User u=userList.get(table.getSelectedRow());  //get user for editing
int location=table.getSelectedRow();  //get location in list to maintain order
userList.remove(u);  //remove selected user to edit variables
//modify user u
userList.add(location,u);  //insert user at previous location in list
model.setRowCount(0);  //reset table model
for (int i = 0; i < userList.size(); i++) {  //refill table model 
    User u = userList.get(i);  /7get user
    Vector<Object> vhelp = new Vector<>(); //create vector to store the values of the variables from user
    vhelp.add(/*your data*/);  // 1 add per variable that should be displayed in table
    model.addRow(vhelp); //add the data to the table model (fills the table with data)
}
User u=userList.get(table.getSelectedRow());//获取用户进行编辑
int location=table.getSelectedRow();//获取列表中的位置以维持顺序
userList.remove(u);//删除所选用户以编辑变量
//修改用户u
userList.add(location,u);//在列表中的上一个位置插入用户
model.setRowCount(0);//重置表模型
对于(inti=0;i
您的方法应如下所示:

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
    DefaultTableModel model = (DefaultTableModel) jTableUsers.getModel();
    User u = userList.get(jTableUsers.getSelectedRow());
    int location=jTableUsers.getSelectedRow();
    userList.remove(u);
    u.setName(jTextFieldName.getText());
    u.setAdress(jTextFieldAdress.getText());
    u.setNumCC(Integer.parseInt(jTextFieldNumCC.getText()));
    u.setTele(Integer.parseInt(jTextFieldTele.getText()));
    //u.isAdmin can't tell what this has to be
    userlist.add(location,u);

    model.setRowCount(0);  
    for (int i = 0; i < userList.size(); i++) {  
        User u = userList.get(i);  
        Vector<Object> vhelp = new Vector<>(); 
        vhelp.add(u.getName()); 
        vhelp.add(u.getAddress());
        vhelp.add(u.getTele());
        vhelp.add(u.getNumCC());
        vhelp.add(u.isAdmin);
        model.addRow(vhelp);
    }
    JOptionPane.showMessageDialog(null, "Data updated.");
DefaultTableModel=(DefaultTableModel)jTableUsers.getModel();
User u=userList.get(jTableUsers.getSelectedRow());
int location=jTableUsers.getSelectedRow();
userList.remove(u);
u、 setName(jTextFieldName.getText());
u、 setAddress(jTextFieldAddress.getText());
u、 setNumCC(Integer.parseInt(jTextFieldNumCC.getText());
u、 settle(Integer.parseInt(jTextFieldTele.getText());
//u、 伊萨明不知道这是什么
添加(位置,u);
model.setRowCount(0);
对于(inti=0;i
您可以使用类似的方法。遗憾的是,您没有指定如何编辑用户

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
User u=userList.get(table.getSelectedRow());  //get user for editing
int location=table.getSelectedRow();  //get location in list to maintain order
userList.remove(u);  //remove selected user to edit variables
//modify user u
userList.add(location,u);  //insert user at previous location in list
model.setRowCount(0);  //reset table model
for (int i = 0; i < userList.size(); i++) {  //refill table model 
    User u = userList.get(i);  /7get user
    Vector<Object> vhelp = new Vector<>(); //create vector to store the values of the variables from user
    vhelp.add(/*your data*/);  // 1 add per variable that should be displayed in table
    model.addRow(vhelp); //add the data to the table model (fills the table with data)
}
User u=userList.get(table.getSelectedRow());//获取用户进行编辑
int location=table.getSelectedRow();//获取列表中的位置以维持顺序
userList.remove(u);//删除所选用户以编辑变量
//修改用户u
userList.add(location,u);//在列表中的上一个位置插入用户
model.setRowCount(0);//重置表模型
对于(inti=0;i
您的方法应如下所示:

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
    DefaultTableModel model = (DefaultTableModel) jTableUsers.getModel();
    User u = userList.get(jTableUsers.getSelectedRow());
    int location=jTableUsers.getSelectedRow();
    userList.remove(u);
    u.setName(jTextFieldName.getText());
    u.setAdress(jTextFieldAdress.getText());
    u.setNumCC(Integer.parseInt(jTextFieldNumCC.getText()));
    u.setTele(Integer.parseInt(jTextFieldTele.getText()));
    //u.isAdmin can't tell what this has to be
    userlist.add(location,u);

    model.setRowCount(0);  
    for (int i = 0; i < userList.size(); i++) {  
        User u = userList.get(i);  
        Vector<Object> vhelp = new Vector<>(); 
        vhelp.add(u.getName()); 
        vhelp.add(u.getAddress());
        vhelp.add(u.getTele());
        vhelp.add(u.getNumCC());
        vhelp.add(u.isAdmin);
        model.addRow(vhelp);
    }
    JOptionPane.showMessageDialog(null, "Data updated.");
DefaultTableModel=(DefaultTableModel)jTableUsers.getModel();
User u=userList.get(jTableUsers.getSelectedRow());
int location=jTableUsers.getSelectedRow();
userList.remove(u);
u、 setName(jTextFieldName.getText());
u、 setAddress(jTextFieldAddress.getText());
u、 setNumCC(Integer.parseInt(jTextFieldNumCC.getText());
u、 settle(Integer.parseInt(jTextFieldTele.getText());
//u、 伊萨明不知道这是什么
添加(位置,u);
model.setRowCount(0);
对于(inti=0;i
用户被添加到我的arraylist和JTable中

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
不要将数据存储在两个单独的位置。数据只能存储在
JTable
TableModel

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
因此,您可以创建一个自定义的“User”对象来包含每个用户的数据。然后您可以创建一个自定义的
TableModel
来保存“User”对象,该对象可以通过
JTable
显示和访问

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
现在我想要的是,当我选择JTable行时,能够获取存储在用户arrayList中的对象,以便修改或删除它们

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
查看有关创建自定义
TableModel
的逐步方法。它包含从
TableModel
动态添加、访问和删除对象所需的所有方法

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
用户被添加到我的arraylist和JTable中

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
不要将数据存储在两个单独的位置。数据只能存储在
JTable
TableModel

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
因此,您可以创建一个自定义的“User”对象来包含每个用户的数据。然后您可以创建一个自定义的
TableModel
来保存“User”对象,该对象可以通过
JTable
显示和访问

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
现在我想要的是,当我选择JTable行时,能够获取存储在用户arrayList中的对象,以便修改或删除它们

    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}  
查看有关创建自定义
TableModel
的逐步方法。它包含从
TableModel
动态添加、访问和删除对象所需的所有方法。

userList.get(table.getSelectedRow());
将导致
    DefaultTableModel model = (DefaultTableModel) jTableInvestidores.getModel();

    User u = userList.get(jTableUsers.getSelectedRow()); 
    userList.remove(u);
    model.removeRow(jTableUsers.getSelectedRow());
    JOptionPane.showMessageDialog(null,"Data removed.");

}