Ola pessoal. Tenho uma aplicacao que utiliza muitos formularios e dentro deles ha um grande numero de perguntas onde ha radion buttons SIM e NAO. Pra evitar criar mts deles, criei uma classe que herda JPanel contendo dois radio buttons (sim e nao) e um metodo que retorna qual deles esta selecionado.
Porem alguns formularios, ao clicar no botao sim, um txtfield deve ser habilitado e ao clicar em nao desabilitado.
Imaginei um addActionListener… mas nao quero que essa classe que herda acesse a interface grafica… seria gambiarra…
Enfim, ha como criar um ActionListener pro JPanel, visto q o mesmo nao aceita o metodo addActionListener… e nesse actionlistener, a funcao retornaria um boolean e na interface grafica eu habilitar ou desabilitar o txtfield assim que eu clicar em algum dos radio button?
Minha sugestão: Além do construtor padrãodo seu Panel customizado, acrescente também um outro construtor que receba como parâmetro um ActionListener. Esse construtor, além de inicializar o componente, deve também associar esse ActionListener recebido aos option buttons.
O Swing tem até uma classe para te ajudar, achamada EventListenerList.
Não tem muito segredo não. Crie o método chamado addActionListener na mão e cadastre os listeners numa lista.
Crie um método protected fireActionListener. Nele, percorra a lista chamando o método ActionPerformed do seus listeners. Você terá que criar o evento na mão também.
Quando o usuário alterar o valor dos radios, chame o método fire…
Um pouco trabalhoso, mas fazer a coisa da forma certa dá ótimos resultados.