ActionListener é uma interface. Você poderia, por exemplo, criar uma classe nos moldes de:
publicclassChainedWrapperimplementsActionListener{privatefinalList<ActionListener>listeners=newCopyOnWriteArrayList<ActionListener>();publicvoidactionPerformed(ActionEvente){for(ActionListenerlistener:listeners){try{listener.actionPerformed(e);}catch(Exceptionex){// Código de tratamento de erros aqui...return;}}}publicsynchronizedvoidaddListener(ActionListenernext){listeners.add(listeners.size());}}
Daí você “monta” a cadeia de listeners do lado de fora, registrando apenas um ChainedWrapper com a instância de JButton.
Deixa ver se eu percebi !
Crio uma class que implementa ActioListners e crio dentro dela uma lista de ActioListeners é isso ? e depois em outra classe crio um objecto desta class que implenta os ActioListners e vou adicionando os ActioListners a esta Lista , depois acrescento esta lista ao meu botao ? como vou ter a certeza que quando um actiolistener falhar os outros nao vao correr ?
E voce acha que era melhor separar cada actiolistener em uma class ?
Eu vou tentar com este codigo, qualquer coisa vou postar !~
Obrigado desde ja !
G
Giuliano_Mega
O laço que percorre a lista de ActionListeners aborta caso haja uma exceção. Você só tem como garantir que se um ActionListener falhar então todos os que vem depois dele na ordem de inserção não vão executar. Para garantir que se um (qualquer) falhar então os outros não vão executar, você teria que implementar um algoritmo no estilo Two-Phase Commit, e teria que estender teus listeners de alguma outra forma.
Só se for conveniente.
He he he. Tá legal. Eu nem tentei compilar isso aí.
Até mais,
L
LuisClaudio
Ta me dando erro :
[code]
public synchronized void addListener(ActionListener next){
listeners.add(listeners.size()); // O ERRO É NESTA LINHA . DIZ QUE NAO ENCONTRA O SYMBOL
}
}