6

Java コンボ ボックスと、SQLite データベースにリンクされたプロジェクトがあります。ID と名前が関連付けられたオブジェクトがある場合:

class Employee {
    public String name;
    public int id;
}

これらのエントリを JComboBox に配置して、ユーザーに従業員の名前が表示されるようにする最善の方法は何ですか?

selEmployee.getSelectedItem();

ありがとう

4

4 に答える 4

10

最初の方法: 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;
    }
}
于 2012-04-30T17:39:10.793 に答える
6

従業員オブジェクトを 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;
  }
}
于 2012-04-30T17:38:06.603 に答える
0

カスタムを作成できますDefaultComboBoxModel。その中で、あなたのケースであなたのデータのベクトルを作成してくださいVector<Employee> empVecgetSelectedItem()さらにメソッドをオーバーライドし、を使用getSelectedIndex()してベクターから値を取得する必要があります。

于 2012-04-30T17:37:12.890 に答える