2013-06-13 2 views
0

У меня возникли проблемы с методом setSelectedItem JComboBox. Это просто не работает. Вот мой код; У меня класс на станции и в классе. Поэтому они не включены. Независимо от того, что я пытаюсь, я не могу установить элемент, выбранный в ComboBox;setSelectedItem метод не работает

//ListItem Class 

public class ListItem { 
private String id; 
private String value; 

public ListItem() 
{ 

    id = ""; 
    value = ""; 
} 
public ListItem(String id, String value) 
{ 

    this.id = id; 
    this.value = value; 

} 

public String getID(){return this.id;} 
public String getValue() { return this.value;} 

public void setID(String id){this.id = id;} 
public void setValue(String value) {this.value = value;} 
@Override 
public String toString() 
{ 
    return value; 
} 


//show station 
private void showSelectedStation(String stationCode){ 


    stationDA = new StationDA(); 
    station = stationDA.getStationByCode(stationCode); 

    //Assign values to Division fields 
    jtxtStationCode.setText(Integer.toString(station.getStationCode())); 
    jtxtStationName.setText(station.getStationName()); 


    divisionDA = new DivisionDA(); 
    division = divisionDA.getDivisionByCode(station.getDivisionCode()); 



    ListItem myItem = new ListItem(
    division.getDivisionCode(), division.getDivisionName()); 


    jcbDivisionName.setSelectedItem(myItem); //not working.Only the first Value in the  list is showing 


} 

ответ

1
ListItem myItem = new ListItem(
division.getDivisionCode(), division.getDivisionName()); 
jcbDivisionName.setSelectedItem(myItem); 

Вы используете пользовательский объект. Вам нужно реализовать метод equals(), чтобы comboBox мог выбрать правильный элемент.

+0

Спасибо за ваш ответ. но я не верю, что понимаю вас. Как реализовать метод equals в этом контексте? – unleashed

+0

@ user2483307, см. [Коробка с скрытыми данными] (http://tips4java.wordpress.com/2013/02/18/combo-box-with-hidden-data/). Класс Item показывает, как это можно сделать. На самом деле вы, возможно, даже можете использовать этот класс, поскольку он был предназначен для того, чтобы делать то, что вы делаете (из того, что я могу сказать о вашем коде). – camickr

1

ListItem должен реализовать метод equals, так что JComboBox может соответствовать товару.

Что-то вроде:

public class ListItem { 
    //your code 

    @Override 
    public boolean equals(Object obj) { 
     if (obj == null) 
      return false; 
     if (!(obj instanceof ListItem)) 
      return false; 

     ListItem other= (ListItem) obj; 
     if (this.name.equals(other.name)) 
      return true; 

     return false; 
    } 
} 

Если предположить, что у вас есть имя поля. Просто сравните все, что вы хотите сравнить.

Смежные вопросы