您的问题有些不完整,但我的猜测是您的 JComboBox 中填充了 String。如果是这样,您可能会更好地使用将 ProductID 与 ProductName 结合在一起的自定义类的对象来填充 JComboBox(或者更好的是它的模型)。要让组合框显示名称,您需要为您的类提供一个返回名称的 toString() 方法,或者为您的组合框提供一个显示名称的单元格渲染器。
Edit
例如,创建一个类 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;
}
}
Edit 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));
}
}
Edit 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);
}