【问题标题】:Java combobox swing [closed]Java组合框摆动[关闭]
【发布时间】:2014-08-27 01:00:49
【问题描述】:

我的表有两个字段:

 ProductID  (Primary Key)
 ProductName  (duplicate values will be present)

我已将productName 从上表中刷新到 Combobox 中。

当用户从Ccombobox 的产品列表中选择Item 时。我需要获取所选产品的对应ID。

try {
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/kart","root","");
    PreparedStatement statement=connection.prepareStatement("SELECT product_name,product_id from allproducts");
    ResultSet result = statement.executeQuery();

    while(result.next()){
        combo.add(result.getString(1));
    } 
} catch (SQLException ec) {
    System.out.println("Connection Failed! Check output console");
    ec.printStackTrace();
    return;
}

【问题讨论】:

  • 您的问题不完整,因为它没有告诉我们您可能遇到的问题或您尝试过的代码。
  • 您面临的具体问题是什么?请完成您的问题

标签: java mysql swing combobox


【解决方案1】:

您的问题有些不完整,但我的猜测是您的 JComboBox 填充了字符串。如果是这样,您最好使用将您的 ProductID 与 ProductName 组合的自定义类的对象来填充 JComboBox(或者更好的是它的模型)。要让组合框显示名称,您需要为您的类提供一个返回名称的 toString() 方法,或者为您的组合框提供一个显示名称的单元格渲染器。


编辑
例如,创建一个 MyComboItem 类,给它两个从数据库中填充的字符串字段,给它一个显示产品名称的 toString() 方法,并用这种类型的项目填充你的 JComboBox:

class MyComboItem {
   private String productId;
   private String productName;

   public MyComboItem(String productId, String productName) {
      this.productId = productId;
      this.productName = productName;
   }

   public String getProductId() {
      return productId;
   }

   public String getProductName() {
      return productName;
   }

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

编辑 2

可以这样使用:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

public class ComboItemTest {
   public static void main(String[] args) {
      DefaultComboBoxModel<MyComboItem> comboModel = 
              new DefaultComboBoxModel<MyComboItem>();

      // note that here you would fill the model with data from your database ***
      comboModel.addElement(new MyComboItem("x1234A", "Product 1"));
      comboModel.addElement(new MyComboItem("x1235A", "Product 2"));
      comboModel.addElement(new MyComboItem("x1236A", "Product 3"));
      comboModel.addElement(new MyComboItem("x1237A", "Product 4"));
      comboModel.addElement(new MyComboItem("x1238A", "Product 5"));
      comboModel.addElement(new MyComboItem("x1239A", "Product 6"));

      final JComboBox<MyComboItem> combobox = new JComboBox<MyComboItem>(comboModel);

      combobox.addActionListener(new ActionListener() {

         @Override
         public void actionPerformed(ActionEvent e) {
            MyComboItem item = (MyComboItem) combobox.getSelectedItem();
            if (item != null) {
               System.out.printf("You've selected Product Name: %s, Product ID: %s%n", 
                     item.getProductName(), item.getProductId());
            }
         }
      });

      JOptionPane.showMessageDialog(null, new JScrollPane(combobox));

   }
}

编辑 3
在您的情况下,您将使用 ResultSet 中的信息填充模型。可能是这样的:

   ResultSet result = statement.executeQuery();

   while(result.next()){
       String productName = result.getString(1);
       String productId = result.getString(2); // ???? not sure if this is valid
       MyComboItem comboItem = new MyComboItem(productId, productName);
       comboModel.addElement(comboItem);
   }

【讨论】:

  • 当我从组合框中选择产品名称时,我想获取 ID。
  • @Explore-X:我解释了怎么做。如果您需要更多帮助,请编辑您的问题并提供更完整的信息。
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
相关资源
最近更新 更多