2016-09-12 53 views
1

要獲取項目在組合框內的位置,我通常使用getSelectedIndex()方法,但是當您的項目爲等於時,此方法不再有效。在Java中使用JCombobox獲取項目的正確位置

假設我們有我們的JCombobox以下項目:{Harry , John , Mary , Harry}然後選擇Harry時(ComboBox的第四個項目)我們沒有得到正確的輸出應該是:3而是我們獲得0(第一項的位置)。

JCombobox實現允許我們添加相同的項目,但當我們嘗試使用getSelectedIndex()方法嘗試使其位置在JCombobox內時仍會出現此問題。

那麼有沒有辦法讓一個物品的正確位置或索引等於JCombobox中的另一個物品?

+0

根據oracle預期的行爲。我從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得到元素的索引

相關問題