java - 基于 JCombobox Java 上的 selectedItem 的 JFrame
问题描述
我刚开始用 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,当我在 PHP 中进行开发时,我知道这更容易,因为我只需要将选择值中的 id 和显示中的名称。在 android 中,我可以通过 Intent 发送,但我不知道如何在 jaa 中执行,因为必须打开的下一个 JFrame 必须使用其他表中的信息获取有关所选学生的详细信息。感谢您的帮助。
解决方案
首先为学生创建一个包装类
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);
}
}
推荐阅读
- laravel - Laravel Api TDD 附加用户
- gradle - 使用 gradlew 打包的 fat jar 中缺少依赖项 FreeTypeFontGenerator
- javascript - 将 js 变量传递给外部 php 页面
- apache-zookeeper - 无法在 Windows 中安装 Zookeeper
- installation - 如何使用 OCS-Install 从 pling.com 更改 Debian 9 XFCE 中的主题
- react-native - 卸载所有先前安装的屏幕以在后按时退出应用程序
- python - 当语句返回布尔值时,如何在 if 语句中使用该值
- node.js - Parse-Server 电子邮件验证过程
- c# - “游戏对象”无法识别
- loops - 为什么切片可以通过分配在函数中更改,而不是在 for 循环中?