私にJList
はユーザーがいて、リスト内の要素が選択されるたびに、その要素のインデックスをintに格納します。次に、JButton
ActionListener
は「ユーザーの削除」ボタンの押下をリッスンし、リストのその要素にあるユーザーを削除します。問題は、これを最初にActionListener
実行すると実行が停止するため、別の要素を削除したい場合、ボタンは何も実行しなくなることです。一度何かを実行した後でも、イベントハンドラーが実行され続けるようにするにはどうすればよいですか?参考までに私のコードは次のとおりです。
/*
* Listener for user list selection
*/
userList.addListSelectionListener(
new ListSelectionListener () {
public void valueChanged(ListSelectionEvent e) {
delete.setEnabled(true);
index = userList.getSelectedIndex();
}
}
);
/*
* Listener for delete button press
*/
delete.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i = JOptionPane.showConfirmDialog(null,
"Are you sure you want to delete user " + users.get(index) + "?");
switch(i) {
case JOptionPane.YES_OPTION:
try {
Controller.deleteUser(users.get(index));
users.remove(index);
listModel.removeElementAt(index);
userList = new JList(listModel);
}
catch (UserNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
);