【问题标题】:Refresh JTable after inserting data from another Frame从另一个 Frame 插入数据后刷新 JTable
【发布时间】:2018-10-05 05:40:30
【问题描述】:

当我打开我的AdminPanel 时,它包含JTablePatientRecords 以及打开框架以添加患者的按钮。填写表格后,我单击添加按钮,它将保存到数据库中

int YesOrNo = JOptionPane.showConfirmDialog(null, "Do you want to save?", "Save",JOptionPane.YES_NO_OPTION);
    if(YesOrNo == 0){
        try{
        String sql = "Insert into Patient_Records (First_Name,Last_Name,MI,Age,Birth_Date,Gender,Marital_Status,Street,City,[State/Province],Zip_Code,Country,Contact_No,Email_Address,Registered_Date,[In/Out]) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        pst = conn.prepareStatement(sql);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String now = (sdf.format(new java.util.Date()));
                pst.setString(1, ADDFIRSTNAME.getText());
                pst.setString(2, ADDLASTNAME.getText());
                pst.setString(3, ADDMIDDLEINITIAL.getText());
                pst.setString(4, ADDAGE.getText());
                pst.setString(5, ((JTextField)ADDDATE.getDateEditor().getUiComponent()).getText());
                pst.setString(6, (String) ADDGENDERBOX.getSelectedItem());
                pst.setString(7, (String)ADDSTATUS.getSelectedItem());
                pst.setString(8, ADDADDRESS.getText());
                pst.setString(9, ADDADDRESS1.getText());
                pst.setString(10, ADDADDRESS2.getText());
                pst.setString(11, jTextField3.getText());
                pst.setString(12, (String)ADDCOUNTRY.getSelectedItem());
                pst.setString(13, jTextField1.getText());
                pst.setString(14, jTextField2.getText());
                pst.setString(15, now);
                pst.setString(16, "0");
        String CN = jTextField1.getText();
        String EA = jTextField2.getText();
        String F = ADDFIRSTNAME.getText();
        String M = ADDLASTNAME.getText();
        String L = ADDMIDDLEINITIAL.getText();
        if(!ConValid(CN)){
            JOptionPane.showMessageDialog(null, "Contact Number is not valid","Invalid Input",JOptionPane.WARNING_MESSAGE);
        }else if(!ConValid(CN)){
            JOptionPane.showMessageDialog(null, "Contact Number must contain 11 number(s)","Invalid Input",JOptionPane.WARNING_MESSAGE);
        }else if(!valEmail(EA)){
            JOptionPane.showMessageDialog(null, "Invalid Email Address","Invalid Input",JOptionPane.WARNING_MESSAGE);
        }else if(!OnLetter(F) || !OnLetter(M) || !OnLetter(L)){
            JOptionPane.showMessageDialog(null, "Name must not contain number(s)","Invalid Input",JOptionPane.WARNING_MESSAGE);
        }else{
            JOptionPane.showMessageDialog(null, "Saved","Saved",JOptionPane.INFORMATION_MESSAGE);
            pst.execute();
            AdminPortal AP = new AdminPortal();
            AP.PatientRec();
        }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
    }else{

    }

之后,我退出了用患者记录填充的框架,以及包含 JTableAdminPanel,其中包含 PatientRecords 并没有刷新

我试过这段代码

 AdminPortal AP = new AdminPortal();
                AP.PatientRec();

我该怎么办?

【问题讨论】:

标签: java database sqlite


【解决方案1】:

这里的表需要用最新数据刷新。为此,请按照以下步骤操作。

  • 保存操作成功完成后清除 JTable 实例。
  • 调用用于显示 PatientRecords 的例程/方法,新调用将确保最新数据反映在 JTable 实例中。

在代码方面:

else{
            JOptionPane.showMessageDialog(null, "Saved","Saved",JOptionPane.INFORMATION_MESSAGE);
            pst.execute();

            //invoke method to clear/ reset JTable.

            //invoke method to populate JTable with fresh data.

            AdminPortal AP = new AdminPortal();
            AP.PatientRec();
        }

【讨论】:

  • 无需清除和重新填充所有数据。您可以在支持TableModel 上注册TableModelListener 并通知它确切的更改。
  • @Izruo 感谢您的建议。我认为应该有一些触发点来刷新数据。它可以是任何东西
猜你喜欢
  • 2014-09-06
  • 2014-08-11
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多