Ações em muitos botões - Resolvido

3 respostas
clincks

Opa,

Queria saber se existe uma forma mais fácil para fazer isto:

tenho uma janela que implementa ActionListener com vários botões. Cada botão chama um método diferente;

Estou fazendo assim para cada botão:

botao.addActionListener(this);

Mas no método actionPerformed tenho que fazer vários IFs para verificar o qual botão foi clicado e assim chamar seu metodo correspondente. Assim:

public void actionPerformed(ActionEvent e) {
		String comando;
		comando = e.getActionCommand();

                if(comando.equals("aaaa"))
                     metodo1();

                if(comando.equals("bbbb"))
                     metodo2();

                if(comando.equals("cccc"))
                     metodo3();

                if(comando.equals("dddd"))
                     metodo4();

...
}

Tem uma forma mais facil para fazer isso??

3 Respostas

renamed

Sim, vc pode criar um actionlistener separadamente em cada botão como classe interna... veja:

JButton botao1 = new JButton("B1");
	JButton botao2 = new JButton("B2");
	JButton botao3 = new JButton("B3");
	JButton botao4 = new JButton("B4");
	JButton botao5 = new JButton("B5");

	/**
	 * Chame esse método no contrutor do objeto
	 */
	private void addListeners() {
		botao1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 1

			}
		});

		botao2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 2

			}
		});

		botao3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 3

			}
		});

		botao4.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 4

			}
		});

		botao5.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 5

			}
		});
	}

ok?

clincks

HUMMm

Assim acho que ficará mais organizado aqui, pq são várioss

vlw

thundercas
renamed:
Sim, vc pode criar um actionlistener separadamente em cada botão como classe interna... veja:
JButton botao1 = new JButton("B1");
	JButton botao2 = new JButton("B2");
	JButton botao3 = new JButton("B3");
	JButton botao4 = new JButton("B4");
	JButton botao5 = new JButton("B5");

	/**
	 * Chame esse método no contrutor do objeto
	 */
	private void addListeners() {
		botao1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 1

			}
		});

		botao2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 2

			}
		});

		botao3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 3

			}
		});

		botao4.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 4

			}
		});

		botao5.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				// Chame o método que cuidará do tratamento do clique do botão 5

			}
		});
	}

ok?

Mas isso não gera um aumento desnecessário na quantidade de linhas de código??
Creio que seja melhor separar com IF's e separar os blocos com comentários....

Criado 9 de dezembro de 2009
Ultima resposta 10 de dez. de 2009
Respostas 3
Participantes 3