当前位置: 首页 > 知识库问答 >
问题:

如何从JTable中获取存储对象

方韬
2023-03-14

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

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.");

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

}   

有谁能帮我一下吗?谢谢!

共有1个答案

管翼
2023-03-14

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

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

您的方法应该如下所示:

    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.");
 类似资料:
  • 问题内容: 我使用以下代码将单元格渲染更改为显示图像而不是文本: 现在,我希望能够获取中的每一行的图像,以便将其保存在数据库中。我该怎么办? 问题答案: 我无法抗拒这样的例子

  • 我很抱歉。我以前也提出过同样的问题,但被认为与这个答案重复。我真的不明白那里的答案,我也不明白为什么那个问题会回答我的问题。在我看来很不一样。我需要获取图像对象,但答案是创建一个流。有人能帮我把答案和我的问题联系起来吗?我是新的云功能。请 ================================================================================

  • 我想从FireBase的方法获取下载Url。如何使用以下代码获取下载Url? 我使用了,但这不起作用。

  • 我想从JTable获取DefaultTableModel,然后添加Column。我在JTable中搜索,但只找到了getModel()方法,然后无法添加列。最后,假设我在JTable中使用Binding方法设置日期,然后没有DefaultTableModel,我想添加列内容JButton添加到我的JTable中。

  • 我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。

  • 在使用JDBC处理SQL Server存储过程时,我偶尔会遇到两种形式的奇怪行为: 问题1:我在SQL Server Management Studio(SSMS)中运行一个存储过程,它返回一个结果集。然而,当我试着 我有个例外 com.microsoft.sqlserver.jdbc.sqlserverexception:语句未返回结果集。 问题2:我在SSMS中运行了一个存储过程,它引发了一个