6 개의 요소가있는 동일한 DefaultListModel을 사용하여 6 개의 콤보 상자가 있습니다. 콤보 상자 중 하나가 목록에서 다른 콤보 상자가 선택한 요소를 선택하면 요소를 선택한 사람을 바꿀 수 있도록 ActionListener를 사용합니다. 일명, 콤보 박스 1은 선택된 요소 1을 가지고, 콤보 박스 3이 선택한 요소 2를 선택하고, 청자가 콤보 박스 3을 실행 한 후에 요소 1을 선택하게합니다.여러 개의 동일한 요소가 항상있는 JComboBox
ActionListener abilCBListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
JComboBox cb = (JComboBox)evt.getSource();
int ind = abilCBArray.indexOf(cb);
int num = 15;
int dup = 7;
if(abilCBArray.size() == 6 && abilCBBoo == true){
abilCBBoo = false;// prevents another combobox's listener from firing
for(int i = 0; i < abilCBArray.size();i++){
//System.out.println("i = " + i + " index = "+abilCBArray.get(i).getSelectedIndex());
if(i != ind){
num -= abilCBArray.get(i).getSelectedIndex();
System.out.println("i = "+ i+" num = "+ num+ " Index = "+abilCBArray.get(i).getSelectedIndex());
if(abilCBArray.get(i).getSelectedIndex() == cb.getSelectedIndex()){
dup = i;
}
}
}
if(num < abilCBArray.size() && dup != 7){
abilCBArray.get(dup).setSelectedIndex(num);
}
}else{
System.out.println("Tried to run abilCBArrayChange without full array");
}
abilCBBoo = true;
}
};
문제는 사용자가 DefaultListModel에 숫자의 임의의 집합을 넣을 수 있고, 숫자를가 동일한 경우 콤보 내 ActionListener를 망쳐 놨어요 수의 첫 번째 인스턴스의 인덱스를 선택할 것입니다 . 내가 읽는 모든 것은 콤보 상자 선택 문제를 해결하기 위해 목록의 각 항목을 고유하게 만들어야한다는 것을 나타내는 것으로 보이며 여전히 getSelectIndex()를 사용할 수 없습니다. 왜냐하면 이렇게해도 첫 번째 인스턴스를 반환하기 때문입니다 번호의.
'getSelectedIndex()는'당신에게 – XtremeBaumer