gpt4 book ai didi

java - 单选按钮在组合框中显示值

转载 作者:行者123 更新时间:2023-11-29 22:28:27 27 4
gpt4 key购买 nike

我对这个 if-else 感到困惑,因为我是 Java 和 MySQL 的新手,并且我尝试自己制作它。

public Menu() {
initComponents();
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/restaurant", "root", "");
System.out.println("ODBC Connection Successful");

showCategory();

} catch (ClassNotFoundException | SQLException e) {
System.out.println("ODBC Connection Failed" + e);

}
}

如果-否则

private void showCategory() {
try {
Statement stmt;
stmt = con.createStatement();

if (rbMFood.isSelected()) {
ResultSet rs = stmt.executeQuery("SELECT * FROM menu_cat WHERE type_id = 'TY02'");
while (rs.next()) {
cmbMCat.addItem(rs.getString("menu_cat"));
}

} else {
ResultSet rs = stmt.executeQuery("SELECT * FROM menu_cat WHERE type_id = 'TY01'");
while (rs.next()) {
cmbMCat.addItem(rs.getString("menu_cat"));
}

}
} catch (Exception e) {

}
}

单选按钮

private void rbMFoodActionPerformed(java.awt.event.ActionEvent evt) {                                        
// TODO add your handling code here:
type = "Food";
}

private void rbMDrinkActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
type = "Drink";
}

我在程序末尾声明了该函数

private String type;

当我点击饮料/食物时,类别仍然是饮料的类别。

enter image description here

数据库

enter image description here

任何帮助将不胜感激!

最佳答案

您正在使用rs.getString("menu_cat")但格式是rs.getString(<Column Name>)但你正在使用 rs.getString(<Table Name>)因为“menu_cat”是表的名称而不是列的名称。

发布构造函数之后

我从您发布的代码中看到,您已调用 showCategory()在构造函数中。此方法负责填充 JComboBox cmbMCat 。现在cmbMCat当您创建新的Menu时正在填充。之后cmbMCat的项目列表不会改变。

所以,我建议您调用 showCategory()来自rbMFoodActionPerformedrbMDrinkActionPerformed方法。我希望这能解决您的问题。

另添加cmbMCat.removeAllItems()之前Statement stmt;删除 cmbMCat 中的所有项目并使用新的项目列表重置它。

关于 if-else 的评论之后

更改 showCatagory()如下:

private void showCategory() {
cmbMCat.removeAllItems();
try {
PreparedStatement stmt; //Used Prepared statement
String sql = "SELECT * FROM menu_cat WHERE type_id = ?";
stmt = con.prepareStatement(sql);

if (type.equals("Drink")) {
stmt.setString("TY01");
} else {
stmt.setString("TY02");
}
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
cmbMCat.addItem(rs.getString("menu_cat"));
}

}
} catch (Exception e) {

}
}

另请注意,您eventListener代码应该是:

private void rbMFoodActionPerformed(java.awt.event.ActionEvent evt){                                        
type = "Food";
showCategory();
}

private void rbMDrinkActionPerformed(java.awt.event.ActionEvent evt){
type = "Drink";
showCategory();
}

关于java - 单选按钮在组合框中显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com