我正在使用NetBeans和它的GUI Builder。 我的问题是我显然无法正确使用List Selection Listener。
我有两种方法。第一个应该获取JList的所选项的索引,并使用它来从ArrayList中检索数据以将其放入各种字段中。 (int index是全局声明的)
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是我的主类,而mitarbeiterListe就是那里的ArrayList。
首先,为什么我不要把“!”在“getValueIsAdjusting()”前面?
第二种方法应该从JList中删除条目以及从ArrayList中删除条目。 而且应该清除TextFields。
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”消息。
为什么Listener会在我的第二种方法中做出反应? 或者更一般,我的错误是什么?
谢谢你的支持!
答案 0 :(得分:0)
在列表模型中的某些内容(不在列表本身中)之前添加“if(index> = 0)”进行更改!