あなたの質問はやや不完全ですが、私の推測では、JComboBoxには文字列が入力されています。その場合は、JComboBox(またはそのモデル)に、ProductIDとProductNameを組み合わせたカスタムクラスのオブジェクトを入力する方がよいでしょう。コンボボックスに名前を表示させるには、クラスに名前を返すtoString()メソッドを指定するか、コンボボックスに名前を表示するセルレンダラーを指定する必要があります。
編集
たとえば、クラスMyComboItemを作成し、データベースから入力する2つのStringフィールドを指定し、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);
}