7

データベースに 2 つのフィールドを含むテーブルがあります

  • ID
  • 名前

DB に保存されているすべての名前を JComboBox "combo1" に入力しました。ユーザーが「combo1」のアイテムを選択するたびに、選択したアイテムの「id」を認識できるようにしたいと考えています。

しかし問題は、テーブル内で名前が重複する可能性があることです。テーブルに 3 つの重複する名前があると仮定すると、

Q1. ユーザーがそれらの一般的な名前を区別できるように、「combo1」のアイテムを表示する方法は?

Q2. ユーザーがアイテムをクリックした後、選択したアイテムに重複がある場合、ユーザーがクリックしたアイテムをどのように認識できますか?

4

3 に答える 3

11

クラスを使用してデータのペアを保存します。JComboBox はその toString() メソッドをラベルとして使用します。

public class Item
{
    int id;
    String name;

    public String toString()
    {
        return this.name+"("+id+")";
    }
}
(...)
Item array[]=new  Item[]{ ... };//fill the array with your items
JComboBox c=new  JComboBox(array);
(...)
//use the combo
(...)
Item selected=(Item)c.getSelectedItem();
System.err.println("id is "+selected.id);
于 2010-01-19T18:47:48.083 に答える
3

すべての ID と名前の組み合わせを取得する場合は、両方を一緒に保持するクラスを作成しないでください。JComboBox から返されたオブジェクトを使用して ID を取得できます。

例えば:

class NameIDObj{

int id;
String name;

NameIDObj(int id, String name){
this.id = id;
this.name = name;
}

public String toString(){
 return name+" ("+id+")";
}


}
于 2010-01-19T18:45:10.460 に答える
2

JComboBox は Object[] を値として受け取ります。確実ではありませんが、JComboBox アイテムごとに名前と ID を持つ独自のクラスを作成し、これらのカスタム オブジェクトの配列を JComboBox に渡すことを試みることができます。

于 2010-01-19T18:49:09.520 に答える