gpt4 book ai didi

java - 如何在 netbeans 8.2 中使用 JComboBox 下拉列表创建更新按钮?

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:06 25 4
gpt4 key购买 nike

我想为下拉列表创建一个更新按钮,用于从 netbeans 中的数据库获取数据。尝试了下面的方法,但无法使其工作。有什么建议么?非常感谢。

public class ViewProduct extends javax.swing.JFrame {
ResultSet rs;
PreparedStatement pst;
Connection conn;
final void FillList(){
try{
//establish connection to table
String url = "jdbc:derby://localhost:1527/ProductInformation";
String username = "admin1";
String password = "admin1";

Connection conn = DriverManager.getConnection(url,username,password);
Statement stat = conn.createStatement();
// get data from table in sql database
String Query = "SELECT * FROM VIEWPRODUCT";
ResultSet rs = stat.executeQuery(Query);
//
DefaultListModel DLM = new DefaultListModel();

while(rs.next()){

JList list = new JList();
JComboBox ProductID_dropdown = new JComboBox();
DefaultComboBoxModel listModel = new DefaultComboBoxModel();

list.setModel(listModel);
ProductID_dropdown.setModel(listModel);
}

}catch(SQLException ex){
JOptionPane.showMessageDialog(null, ex.toString());
}

最佳答案

您的代码中有几处不正确或缺失的地方。例如,您没有 GUI。

由于我不知道您的项目或数据库的确切结构,因此我必须即兴创作并为您提供伪代码方法。您必须更改和配置我在此处显示的几项内容。

首先,在方法外部创建一个 JComboBox 并将其添加到 JPanel 等容器中:

JPanel pane = new JPanel();
JComboBox productID_dropdown = new JComboBox();
JButton btn_updateViewProducts = new JButton("Update Results");

此处添加了用于更新结果的按钮,它包含一个 ActionListener,用于“监听”某人何时单击该按钮。通常您想要检索 ResultSet 并将其内容放入变量中,例如 this example :

// ActionListener for the button
btn_updateViewProducts.add(new ActionListener{
@Override
// When the button is clicked...
public void actionPerformed(ActionEvent arg0) {
// ... get the results out of your database (here it's an example database!
// Configure for your own one)
ResultSet rs = stat.executeQuery(Query);
while(rs.next()){
// "de-construct" every result of the ResultList into variables
String query = "select COF_NAME, SUP_ID, PRICE, " + "SALES, TOTAL " + "from " + dbName + ".COFFEES";
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + "\t" + supplierID + "\t" + price + "\t" + sales + "\t" + total);

// Put items into JComboBox
productID_dropdown.addItem(coffeeName);
}
}
});

// Add the now filled JComboBox to the pane
pane.add(productID_dropdown);

您应该考虑的其他问题:

  • 缺少 GUI
  • 方法FillList是最终的,这看起来很不寻常,这背后有什么原因吗?方法中的 final 意味着它不能被子类覆盖,这里需要吗?
  • FillList 是一个方法,由于编码约定,应以小写字母开头,ProductID_dropdown 也是如此(编码约定)
  • 大多数时候,使用 rs 这样的短变量作为 ResultSet 是没问题的,但如果您的项目变得更大,记住所有这些变量就会变得更加困难。更好:让他们告诉你,他们是什么。而不是 rs -> resultSetViewProduct 或类似的。
  • PreparedStatement pst 从未使用过

我希望这有帮助。 :)

关于java - 如何在 netbeans 8.2 中使用 JComboBox 下拉列表创建更新按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012458/

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