Menu dinamico

1 resposta
N3kr0N

Olá! Estou criando um menu dinâmico para uma aplicação, ele requisita do banco quais tipos de serviço cadastrados. Eu crio e coloco os botões em um array list e depois adiciono em um jPanel, depois de fazer a requisição sobre os tipos de serviço.

for (int i = 0; i < 5; i++) {
    AcompanhamentoTipo aTipo = (AcompanhamentoTipo) AcessoRemoto.getList(AcessoRemoto.servicoAcompanhamentoTipoPontoSelecionarTodos).get(i);
    String nome = aTipo.getNome();
    String subNome = nomeAdjust(nome);
    aLista.add(new JToggleButton(subNome+"..."));
    aLista.get(i).setToolTipText(nome);
    jPanel1.add(aLista.get(i), new java.awt.GridBagConstraints());
}

mas como devo proceder para que ao clicar em um botão qualquer, eu consiga saber qual o id do meu serviço?
Idéias de como fazer para colocar um evento em cada botão do menu? Vocês acham que devo proceder dessa maneira?
Por exemplo, cada botão está sendo preenchido com uma substring do nome do serviço e um hint com o nome do botão mas como faço para conseguir o restante das informações como ID por exemplo? Eu vou ter ‘aTipo’ mas seria o caso de eu ter que criar uma estrutura auxiliar para mapear entre o id e o String nome do botão?
Ideias?
vlw pessoal :wink:

1 Resposta

wellsantos
Uma maneira muito legal de se fazer é implementar um novo método na classe do botão enquanto é feito o laço FOR. Isso possibilitará vc obter o código ou outros atributos que vc quiser.
for (int i = 0; i &lt; 5; i++) {
		    AcompanhamentoTipo aTipo = (AcompanhamentoTipo) AcessoRemoto.getList(AcessoRemoto.servicoAcompanhamentoTipoPontoSelecionarTodos).get(i);
		    String nome = aTipo.getNome();
		    String subNome = nomeAdjust(nome);		    
		    
		    final int codigo = aTipo.getCodigo();
		    
		    final class MeuBotao extends JToggleButton implements ActionListener {
		    	
		    	public MeuBotao(){
		    		this.addActionListener(this);
		    	}
		    	
		    	public void actionPerformed(ActionEvent e) {
					System.out.println(codigo);
				}
		    	
		    }
		    
		    JToggleButton btn = new MeuBotao();
		    aLista.add(btn);
		    
		    aLista.get(i).setToolTipText(nome);
		    jPanel1.add(aLista.get(i), new java.awt.GridBagConstraints());
		}
Desta forma, quando vc receber um evento será possível enxergar os atributos declarados. Lembre-se de declarar como FINAL os atributos que vc for usar para que fiquem visíveis no método implementado no botão.

O mais interessante nesse exemplo acima é que cada um dos botões criados vai enxergar a variável codigo com um valor diferente. Muito massa!

Criado 17 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 1
Participantes 2