JFrame, основанный на selectedItem на JCombobox Java - PullRequest
0 голосов
/ 03 мая 2018

Я только начал разрабатывать на Java, поэтому у меня есть вопрос новичка, у меня есть Jcombobx, который заполняется из моей базы данных с помощью этой функции:

private void fill(){
   try{
       con = DriverManager.getConnection("jdbc:....");
       Statement pst = con.createStatement();
       String sql = "select * from student";
       ResultSet rs = pst.executeQuery(sql);
       while(rs.next()){
            jCombo.addItem(rs.getString("strudent_name");
       }
   } catch (Exception e){
      System.out.println(e.getMessage);
 }

Код работает, и комбо заполняется из моей базы данных, следующим шагом является заполнение другого JFrame из моей базы данных на основе selectedItem в выпадающем списке, когда я разрабатывал в PHP, я знаю, что это было проще, потому что у меня было только поставить идентификатор в выбранное значение и имя в отображаемом. В Android я мог отправить через Intent, но я не знаю, как это сделать в jaa, потому что следующий JFrame, который должен быть открыт, должен получить информацию о выбранном ученике, используя информацию из других таблиц. Спасибо за помощь.

1 Ответ

0 голосов
/ 03 мая 2018

Сначала создайте класс-оболочку для ученика

public class Student
{

    private int id;
    private String name;
    //more fields here like grades, subjects etc

    public Student(int id, String name)
    {
        super();
        this.id = id;
        this.name = name;
    }



    public int getId()
    {
        return this.id;
    }



    public void setId(int id)
    {
        this.id = id;
    }



    public String getName()
    {
        return this.name;
    }



    public void setName(String name)
    {
        this.name = name;
    }



    @Override
    public String toString()
    {
        return name;
    }


}

Затем вы объявляете JComboBox следующим образом

JComboBox<Student> jCombo = new JComboBox<>();

А потом

private void fill(){
   try{
       con = DriverManager.getConnection("jdbc:....");
       Statement pst = con.createStatement();
       String sql = "select * from student";
       ResultSet rs = pst.executeQuery(sql);
       while(rs.next()){
        Student student = new Student(rs.getInt("student_id") , rs.getString("student_name"));     
         jCombo.addItem(student);
       } // while end

   } catch (Exception e){
      System.out.println(e.getMessage);
 }

Когда нажата какая-то кнопка, вы можете получить идентификатор выбранного студента по

showDetailsButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            Student selectedStudent = (Student) jCombo.getSelectedItem();
            new StudentDetails(selectedStudent.getId());

        }
    });

Где StudentDetails - это еще один JFrame

class StudentDetails extends JFrame 
{
    public StudentDetails(int studentID)
    {
        // "Select * from student where student_id =" + studentID;
        super();
        add(new JLabel("Detail of student with id " + studentID + " goes here"));
        setVisible(true);
        setSize(100, 100);

    }
}
...