2015-07-22 1 views
0

У меня есть JTable, заполненный данными о students (student id, name...), и когда я выбираю строку из таблицы, форма открывается и ее поле должно быть заполнено с теми же значениями (например, если Johny Bravo был выбран из-за стола.Как установить кнопку Радио на основе значения, полученного из базы данных

Тогда его имя должно быть показано в тексте, поданном имя в форме, я, как этот 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'), которое можно установить в 'JRadioButton' через' isSelected'. Вам также может понравиться [Как использовать компонент ButtonGroup] (https://docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html) – MadProgrammer

+0

Некоторое представление о структуре «Студента» 'class был бы полезен – MadProgrammer

ответ

0
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 сказал, вы будете нуждаться в ButtonGroup и add все соответствующие кнопки для него.

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

Спасибо, сэр за вашу помощь! Но мне нужно настроить свой переключатель автоматически, исходя из базы данных –

+0

спасибо, сэр! Я получил его, благодаря вашему коду: D –

0

Я работал с таким же любопытным решением в моей работе я генерацию радиокнопку со значениями баз данных и показывать их в диалоге 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);