2016-09-12 10 views
1

コンボボックス内のアイテムの位置を取得するには、通常、と等しいのアイテムがある場合、このメソッドは機能しませんgetSelectedIndex()メソッドです。JavaのJCombobox内のアイテムの正しい位置を取得する

は、我々のJComboboxに以下の項目があるとします。{Harry , John , Mary , Harry}(コンボボックスの4番目の項目)をHarryを選択する際に、我々はあるべき正しい出力を取得していない:3を代わりに我々 0(最初のアイテムの位置)を取得します。

JComboboxの実装では、同等のアイテムを追加できますが、getSelectedIndex()メソッドを使用してJComboboxの内部でその位置を取得しようとすると、この動作が発生します。

JComboboxの別のアイテムと等しいアイテムの正しい位置またはインデックスを取得する方法はありますか?

+0

oracleによると、behinder.iは、このコードがcoderanch.itからこのコードが見つかったと判断しています.https://coderanch.com/t/334611/GUI/java/Duplicate-items -JCombobox –

+0

カスタムクラス内のアイテムをラップします。 – copeg

答えて

3

カスタムクラス内のデータをラップします。 toStringをオーバーライドし、表示するデータオブジェクトをJComboBoxで戻すことができます。例えば:最初と最後のオブジェクトが等しくならない

public class MyClass{ 

    private String myName; 

    public MyClass(String name){ 
     this.myName = name; 
    } 
    @Override 
    public String toString(){ 
     return myName; 
    } 

} 

myComboBox.add(new MyClass("Harry")); 
myComboBox.add(new MyClass("John")); 
myComboBox.add(new MyClass("Mary")); 
myComboBox.add(new MyClass("Harry")); 

、それらequals方法に従って - 重要なポイントをもたらす:このメソッドはで使用されるMyClassの実装は、equalsをオーバーライドしないことを確認しgetSelectedIndex要素の索引を取得する

関連する問題