基于 JCombobox 上的 selectedItem 的 JFrame Java
JFrame based on selectedItem on JCombobox Java
我刚开始在 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);
}
代码正在运行,组合已从我的数据库中填充,下一步是根据组合框中的 selectedItem 从我的数据库中填充另一个 JFrame,当时我在 [=18] 中进行开发=] 我知道这更容易,因为我只需要将 id 放在 select 值中,并将名称放在显示的中。
在 android 中,我可以通过 Intent 发送,但我不知道在 jaa 中该怎么做,因为必须打开的下一个 JFrame 必须使用来自的信息获取有关 selected 学生的详细信息其他表。
感谢您的帮助。
首先为学生
创建一个包装器class
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);
}
当点击某些按钮时,您可以通过
获取所选学生的ID
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);
}
}
我刚开始在 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);
}
代码正在运行,组合已从我的数据库中填充,下一步是根据组合框中的 selectedItem 从我的数据库中填充另一个 JFrame,当时我在 [=18] 中进行开发=] 我知道这更容易,因为我只需要将 id 放在 select 值中,并将名称放在显示的中。 在 android 中,我可以通过 Intent 发送,但我不知道在 jaa 中该怎么做,因为必须打开的下一个 JFrame 必须使用来自的信息获取有关 selected 学生的详细信息其他表。 感谢您的帮助。
首先为学生
创建一个包装器classpublic 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);
}
当点击某些按钮时,您可以通过
获取所选学生的IDshowDetailsButton.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);
}
}