Как установить радиокнопку на основе значения, полученного из базы данных

У меня есть 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();
            }

        }
    });

person STEPHEN YAO    schedule 22.07.2015    source источник
comment
что вы пробовали до сих пор?   -  person Buru    schedule 22.07.2015
comment
Вам нужно оценить значение sex в boolean (true/false), которое можно установить в JRadioButton через isSelected. Вы также можете ознакомиться с Как использовать компонент ButtonGroup< /а>   -  person MadProgrammer    schedule 22.07.2015
comment
Некоторое представление о структуре класса Student было бы полезно.   -  person MadProgrammer    schedule 22.07.2015
comment
Спасибо вам, ребята! но я застрял в этом переключателе, я не могу установить его на основе базы данных   -  person STEPHEN YAO    schedule 23.07.2015


Ответы (3)


    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);
person dly    schedule 22.07.2015
comment
Спасибо, сэр, за вашу помощь! Но мне нужно установить переключатель автоматически на основе базы данных - person STEPHEN YAO; 22.07.2015

В своей работе я работал с таким же решением. Я создаю радиокнопку со значениями базы данных и показываю их в диалоговом окне 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» и «col»:

get_key(list_count, col);
person A.Aleem11    schedule 04.11.2017

Создайте класс Student.java для получения определенного значения таблицы из базы данных. В текущей форме AddStudent создайте вызов функции как getStudentList, чтобы заполнить форму графического интерфейса данными базы данных для определенного идентификатора.

    public ArrayList<Student> getStudentList() {
    ArrayList<Student> studentList = new ArrayList<>();
    conn = DbConnection.ConnectDb();
    String selectQuery = "SELECT * FROM student";

    try {
        PreparedStatement pst = conn.prepareStatement();
        ResultSet rs = pst.executeQuery();
        Donor donor;

        while(rs.next()) {
            student = new Student(rs.getString("id"),
            rs.getString("gender"));
            studentList.add(student);
        }

    } catch (SQLException ex) {
        Logger.getLogger(Student.class.getName()).log(Level.SEVERE, null, ex);
    }
    return studentList; 
}

После создания функции с именем showStudent для отображения конкретного значения данных для вызываемого идентификатора (в приведенном ниже коде male,female указаны значения флажка)

    public void showStudent(int index) throws ParseException {
    if(getStudentList().get(index).getGender().equals("male")) {
                male.setSelected(true);
                female.setSelected(false);
                gender = "male";
            }
            else {
                female.setSelected(true);
                male.setSelected(false);
                gender = "female";
            }
    }

Установите действие на jbutton. Когда получите идентификатор значения из jtextfield, установите флажок для определенного значения пола.

person Karshanguna R    schedule 01.10.2018