0

私はNetBeansとそのGUIビルダーを使用しています。 私の問題は、明らかにList Selection Listenerを適切に使用できないことです。List Selection Listenerが私のメソッドを中断するのはなぜですか?

私には2つの方法があります。最初のものは、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()"の前に?

2番目の方法では、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"というメッセージが表示されます。

リスナーが私の2番目の方法で反応するのはなぜですか? より一般的には、私の間違いは何ですか?

ありがとうございました!

答えて

0

リストモデルの中の何かが(リスト自体ではなく)変更される前に "if(index> = 0)"を追加すると!

関連する問題