如何根据从数据库中提取的值设置单选按钮

问题描述:

我有一个JTable填充了关于students (student id, name...)的数据,当我从表中选择一行时,表单打开并且其字段需要填充相同的值(例如,如果英勇强尼从表中选择。如何根据从数据库中提取的值设置单选按钮

然后他的名字应该在文本提交的名称显示在表格上,我不喜欢这样txtfieldName.setText(student.getName)

我的问题是我怎么自动设置为我Radio button (我的单选按钮是男性或女性),当我点击该字段时

enter code here 

tableGuest.addMouseListener(new MouseAdapter() { 
public void mouseClicked(MouseEvent e) { 
    try{ 
     int row = tableGuest.getSelectedRow(); 
     String guestEdit=(tableGuest.getModel().getValueAt(row,  0).toString()); 


     String query = "Select guest_id,guest_fname,guest_lname,guest_contact,guest_age,guest_gender,guest_address,guest_email from guest_tbl where guest_id= '"+guestEdit+"'"; 

    PreparedStatement pst = con.prepareStatement(query); 
    ResultSet rs = pst.executeQuery(); 

    buttonGroupEdit.add(rdbtnMaleEdit); 
    buttonGroupEdit.add(rdbtnFemaleEdit); 


       while(rs.next()) 
       { 
        String genderEdit=rs.getString("guest_gender"); 

        if(genderEdit.equals("Male")) 
        { 
         rdbtnMaleEdit.setSelected(true); 
        } 
        else if(genderEdit.equals("Female")) 
        { 
         rdbtnFemaleEdit.setSelected(true); 
        } 
        else 
        { 
        JOptionPane.showMessageDialog(null, "error !"); 
        } 


        tfEditFname.setText(rs.getString("guest_fname")); 
        tfEditLname.setText(rs.getString("guest_lname")); 
        tfEditEmail.setText(rs.getString("guest_email")); 

        tfEditContact.setText(rs.getString("guest_contact")) 
       } 
       pst.close(); 


      }catch(Exception ex){ 
       ex.printStackTrace(); 
      } 

     } 
    }); 
+0

到目前为止您尝试过的是什么? – Burusothman

+0

您需要评估'sex'到'boolean'('true' /'false')的值,该值可以通过'isSelected'设置为'JRadioButton'。您可能还想看看[如何使用ButtonGroup组件](https://docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html) – MadProgrammer

+0

关于学生结构的一些想法'类将有帮助 – MadProgrammer

String gender = "male" 
    // this comes from db - since we don't know the structure this is a plain guess. 

    if (gender.equals("male") { 
     rbtMale.setSelected(true); 
    } else { 
     rbtFemale.setSelected(true); 
    } 

而像MadProgrammer说,你将需要一个ButtonGroupadd所有相关的按钮它。

private final ButtonGroup genderButtons = new ButtonGroup(); 
genderButtons.add(rbtMale); 
genderButtons.add(rbtFemale); 
+0

谢谢你的帮助!但我需要根据数据库 –

+0

自动设置我的单选按钮,谢谢你,先生!我明白了,感谢你的代码:D –

我已经同我的工作还挺解决方案我生成与单选框数据库值并显示在对话框中的java他们一起工作。

我们必须从存储在列表类似下面数据库中的值:

列表标题; //这是一个包含数据库的列表值

第一计数列表中的元素的值:

INT list_count = Titles.size();

现在用收音机功能继续进行,首先我们需要列表元素转换成数组象下面这样:

String[] col = new String[list_count]; //created an array with limit of list count values 
for(int i=0; i < list_count; i++){ 
col[i]=Titles.get(i).toString(); // add values of list into array with loop 
} 

下面是我们在上面创建了创建与数据库阵列单选按钮的功能:

public String get_key(int list_count, String[] col){ 

    JRadioButton jb[] = new JRadioButton[col.length]; //Create Radion button array 

    ButtonGroup rb = new ButtonGroup(); //Group Radio Button 

    JPanel panel = new JPanel(new GridLayout(0, 1)); //Set layout of radion button to display each after other 

    JScrollPane sp = new JScrollPane(panel); // Create a scrollpane to put all these radio button on that 

    GridBagLayout gridbag = new GridBagLayout(); //Layout for scrollpane 

sp.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); //bordre for scrollpane 

    List<Component> q = new ArrayList<>(); // q is a component to store and display each radio button 

    JLabel h1=new JLabel("Select a value"); //put a heading on top of jpanel before radio button 

    h1.setFont(new Font("Serif", Font.BOLD, 18)); // set heading text 

    panel.add(h1); //add heading on top of jpanel 

    panel.setBorder(new EmptyBorder(10, 10, 10, 10)); //set panel border to padding each radio button 

    for(int i=0; i < list_count; i++){ 

    jb[i]=new JRadioButton(col[i]); //create radion button dynamacially "col[i]" is the value of each radio 

    rb.add(jb[i]); //it is important also to put all radio in a group we created so only one element should be selected 

    panel.add(jb[i]); // add all radio on jpanel 

     } 

sp.setPreferredSize(new Dimension(350, 300)); //set size of scrollpane 

int act=JOptionPane.showConfirmDialog(null, sp, "Select Primary Key",JOptionPane.OK_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE); //add and show scrollpane in dialog 

} 

调用带有参数值这个功能,我们创建了第一个“list_count” &“关口”:

get_key(list_count, col);