私は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番目の方法で反応するのはなぜですか? より一般的には、私の間違いは何ですか?
ありがとうございました!