Twoje pytanie jest nieco niekompletne, ale domyślam się, że Twój JComboBox jest wypełniony ciągiem. Jeśli tak, prawdopodobnie lepiej byłoby wypełnić JComboBox (lub lepiej jego model) obiektami niestandardowej klasy, która łączy Twój ProductID z ProductName. Aby pole kombi wyświetlało nazwę, musisz albo nadać swojej klasie metodę toString(), która zwraca nazwę, albo nadać polu kombi mechanizm renderujący komórki, który pokazuje nazwę.
Edytuj
Na przykład utwórz klasę MyComboItem, daj jej dwa pola String, które wypełnisz z bazy danych, nadaj jej toString()
metoda, która pokazuje nazwę produktu i wypełnij JComboBox elementami tego typu:
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;
}
}
Edytuj 2
Którego można użyć w ten sposób:
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));
}
}
Edytuj 3
W Twoim przypadku wypełniłbyś swój model informacjami z zestawu wyników. Może coś takiego:
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);
}