最初の方法:toString()
をEmployeeクラスに実装し、名前を返すようにします。コンボボックスモデルにEmployeeのインスタンスが含まれるようにします。選択したオブジェクトをコンボから取得すると、Employeeインスタンスが取得され、IDを取得できます。
2番目の方法:toString()
が名前以外のもの(デバッグ情報など)を返す場合は、上記と同じ操作を行いますが、カスタムセルレンダラーをコンボに追加設定します。このセルレンダラーは、値をEmployeeにキャストし、ラベルのテキストを従業員の名前に設定する必要があります。
私はあなたがのIDを取得したいときにいつでもResultSetの今
HashMap<Integer, Integer> IDHolder= new HashMap<>();
int a=0;
while(rs.next())
{
comboBox.addItem(rs.getString(2)); //Name Column Value
IDHolder.put(a, rs.getInt(1)); //ID Column Value
a++;
}
であなたのJComboBoxを充填する際にこれを行うにはベストとシンプル方法は、このようなHashMap
ものを使用することだろうと思う
public class EmployeeRenderer extends DefaulListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setText(((Employee) value).getName());
return this;
}
}
レンダラーを使用する方が、 GUIに合わせてString()を呼び出すことができます。 –