Java コンボ ボックスと、SQLite データベースにリンクされたプロジェクトがあります。ID と名前が関連付けられたオブジェクトがある場合:
class Employee {
public String name;
public int id;
}
これらのエントリを JComboBox に配置して、ユーザーに従業員の名前が表示されるようにする最善の方法は何ですか?
selEmployee.getSelectedItem();
ありがとう
最初の方法: toString()
Employee クラスに実装し、名前を返すようにします。コンボ ボックス モデルに Employee のインスタンスを含めます。コンボから選択したオブジェクトを取得すると、Employee インスタンスが取得されるため、その ID を取得できます。
2 番目の方法:toString()
名前以外のもの (デバッグ情報など) を返す場合、上記と同じことを行いますが、さらにカスタム セル レンダラーをコンボに設定します。このセル レンダラーは、値を Employee にキャストし、ラベルのテキストを従業員の名前に設定する必要があります。
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;
}
}
従業員オブジェクトを JComboBox に追加し、従業員クラスの toString メソッドを上書きして、従業員名を返します。
Employee emp=new Employee("Name Goes here");
comboBox.addItem(emp);
comboBox.getSelectedItem().getID();
...
public Employee() {
private String name;
private int id;
public Employee(String name){
this.name=name;
}
public int getID(){
return id;
}
public String toString(){
return name;
}
}
カスタムを作成できますDefaultComboBoxModel
。その中で、あなたのケースであなたのデータのベクトルを作成してくださいVector<Employee> empVec
。getSelectedItem()
さらにメソッドをオーバーライドし、を使用getSelectedIndex()
してベクターから値を取得する必要があります。