NetBeans 및 GUI 작성기를 사용하고 있습니다. 제 문제는 분명히 List Selection Listener를 올바르게 사용할 수 없다는 것입니다.List Selection Listener가 내 메서드를 방해하는 이유는 무엇입니까?
두 가지 방법이 있습니다. 첫 번째 것은 JList의 선택된 항목의 인덱스를 가져 와서 ArrayList에서 데이터를 검색하여이를 다양한 필드에 넣는 것입니다. (int 인덱스는 전역 적으로 선언됩니다.)
private void mitarbeiterAnzeigeValueChanged(javax.swing.event.ListSelectionEvent evt) {
if(evt.getValueIsAdjusting()) { //I didn't put the "!" here because then this method would do nothing.
JList jl = (JList) evt.getSource();
index = jl.getSelectedIndex();
nameTextField2.setText(Arbeitsplan.mitarbeiterListe.get(index).gibNamen());
beschäftigungsartBox2.setSelectedItem(Arbeitsplan.mitarbeiterListe.get(index).gibBeschäftigungsart());
wochenstundenTextField2.setValue(Arbeitsplan.mitarbeiterListe.get(index).gibWochenstunden());
}
}
Arbeitsplan이 내 주 클래스이고 거기에있는 ArrayList가 있습니다.
첫 번째로, 왜 "!" "getValueIsAdjusting()"앞에 있습니까?
두 번째 방법은 JList 및 ArrayList 밖으로 항목을 삭제해야합니다. 또한 TextField를 지워야합니다.
private void mitarbeiterLöschenButtonActionPerformed(java.awt.event.ActionEvent evt) {
Arbeitsplan.mitarbeiterListe.remove(index);
mitarbeiterListModel.remove(index);
mitarbeiterAnzeige.remove(index);
mitarbeiterAnzeige.setModel(mitarbeiterListModel);
nameTextField2.setText("");
beschäftigungsartBox2.setSelectedIndex(0);
wochenstundenTextField2.setValue("");
}
"mitarbeiterAnzeige.remove (index);" 스레드가 첫 번째 메소드로 다시 변경되고 결국 아무 것도 작동하지 않습니다. "ArrayIndexOutOfBoundsException : -1"메시지가 나타납니다.
왜 두 번째 방법으로 리스너가 반응합니까? 또는 더 일반적으로, 내 실수는 무엇입니까?
감사합니다.