为什么List Selection Listener会中断我的方法?

时间:2016-07-10 03:57:07

标签: user-interface netbeans indexoutofboundsexception listselectionlistener

我正在使用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会在我的第二种方法中做出反应? 或者更一般,我的错误是什么?

谢谢你的支持!

1 个答案:

答案 0 :(得分:0)

在列表模型中的某些内容(不在列表本身中)之前添加“if(index> = 0)”进行更改!