在带有空格的JComboBox中识别并选择名称

时间:2018-10-03 13:51:55

标签: java database sqlite

首先,我有带有列Appointment_ID,Doc_ID,Dep_Id,SchedDate,Patient_ID和Patient_Table的表Appointment_Table,并具有Patient_ID,FName,MI,LName等...。以及具有Doc_ID,FName,MI,LName等的Doctor_Table ...因此,我创建了一个带有3个JComboBox的框架Add Appointments frame,首先是部门名称,它当然包含部门名称,然后其中的医生名称包含FName,Mi,LName和患者名称相同。 / p>

因此我将所有只有医生的部门名称插入JCombobox

public void ViewDepartmentName(){
   try{
       String sql = "Select DISTINCT Department_Name from Department_Table\n" +
                    "inner join User_Table on Department_Table.Department_ID=User_Table.Department_ID\n" +
                    "where Role_ID = 3";
       pst = conn.prepareStatement(sql);
       rs = pst.executeQuery();
       while(rs.next()){
       String add1 = rs.getString("Department_Name");
       DoctorDep.addItem(add1);
       }
   }catch(Exception e){
       JOptionPane.showMessageDialog(null, e);
   }finally {
       try {
           rs.close();
           pst.close();
       }catch(Exception e){

       }
   }

}

因此,每当我单击部门名称的JComboBox时,它只会显示有医生的部门名称

以及患者姓名

private void ViewDoctorPatientsBox(){
   try{
       String sql = "Select * from Patient_Records";
       pst = conn.prepareStatement(sql);
       rs = pst.executeQuery();
       while(rs.next()){
       String add1 = rs.getString("First_Name");
       String add2 = rs.getString("MI");
       String add3 = rs.getString("Last_Name");
       DoctorPatient.addItem(add1+" "+add2+" "+add3);
       }
   }catch(Exception e){
       JOptionPane.showMessageDialog(null, e);
   }finally {
       try {
           rs.close();
           pst.close();
       }catch(Exception e){

       }
   }
}

,然后在“患者姓名”中插入Fname,MI,Lname,如上面的代码所示 与“医生姓名”相同,只有在我这样选择其部门时才会显示

try{
        String sql = "Select * from User_Table\n" +
                     "inner join Department_Table on User_Table.Department_ID=Department_Table.Department_ID\n" +
                     "where Department_Name = ? AND Availability = 1";
        pst = conn.prepareStatement(sql);
        pst.setString(1, (String)DoctorDep.getSelectedItem());
        rs = pst.executeQuery();
        DoctorNames.removeAllItems();
        DoctorNames.addItem("Select");
        while(rs.next()){
            String add1 = rs.getString("First_Name");
            String add2 = rs.getString("MI");
            String add3 = rs.getString("Last_Name");
            DoctorNames.addItem(add1+" "+add2+" "+add3);
        }

    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }finally {
       try {
           rs.close();
           pst.close();
       }catch(Exception e){

       }
   }

选择所有要选择的内容后,我需要将其保存到Appointment_Table中,只有他们的Doc_ID,Dep_ID,Patient_ID,而JComboBox却具有我应该做什么语法的名称?

1 个答案:

答案 0 :(得分:0)

  

只有他们的Doc_ID,Dep_ID,Patient_ID而不是JComboBox的名称应该是什么语法?

您的组合框需要存储两个数据:

  1. ID
  2. 名字。

因此,您需要创建一个自定义对象以存储在组合框中,然后只需要在组合框中显示名称。

有两种显示名称的方法:

  1. 创建一个自定义渲染器。这是更好的方法,但涉及更多。有关此方法的示例,请参见Combo Box With Custom Renderer

  2. 重写自定义对象的toString()方法以简单地返回名称。组合框的默认渲染器将调用对象的toString()方法。有关此方法的更多信息,请参见Combo Box With Hidden Data