Câu hỏi của bạn hơi chưa đầy đủ, nhưng tôi đoán là JComboBox của bạn được điền bằng Chuỗi. Nếu vậy, tốt hơn là bạn nên điền JComboBox (hoặc tốt hơn là mô hình của nó) với các đối tượng của lớp tùy chỉnh kết hợp ProductID của bạn với ProductName. Để hộp tổ hợp hiển thị tên, bạn cần cung cấp cho lớp của mình một phương thức toString () để trả về tên hoặc cung cấp cho hộp tổ hợp của bạn một trình kết xuất ô hiển thị tên.
Chỉnh sửa
Ví dụ:tạo một lớp, MyComboItem, cung cấp cho nó hai trường Chuỗi mà bạn điền từ cơ sở dữ liệu của mình, đặt cho nó một toString()
phương thức hiển thị tên sản phẩm và điền vào JComboBox của bạn với các mục thuộc loại này:
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;
}
}
Chỉnh sửa 2
Cái nào có thể được sử dụng như vậy:
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));
}
}
Chỉnh sửa 3
Trong trường hợp của bạn, bạn sẽ điền vào mô hình của mình bằng thông tin từ Tập kết quả. Có lẽ một cái gì đó như:
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);
}