0

我正在使用NetBeans,它是GUI生成器。 我的問題是,我顯然無法正確使用列表選擇監聽器。爲什麼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是我的主類,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)」之前列表模型(不在列表本身)改變了!

相關問題