Item de menu e botão com o mesmo comportamento

10 respostas
A

Colegas, como fazer com que o um botão e um item de menu executem o mesmo código, sem ter que repetir em ambos os controladores de evento o mesmo código?

10 Respostas

SandroSoftwares

cara, se a sua questão é não duplicar o código, você pode criar um método contendo a parte do código que deseja que estaja nos dois locais e ao invés de colocar o código coloca o método.

Você pode fazer isso assim: seleciona o código que seria duplicado. clica com direito, inserir método, e nomeia o método.

A

Eu não estou utilizando nenhuma IDE.

RenanRosa

não sabe criar um metodo ??

public void nomeMetodo(){

//TODO aqui coloca o que quer que faça

}

ai no evento chame o metodo:

nomeMetodo();

A

Criar um método eu sei.
Talvez eu não esteja sendo claro.
A questão é que eu estou tendo que colocar o mesmo código nos eventos do item do menu e do botão.
Será que tem uma maneira de, a partir do evento de um dos dois, ele executar o outro evento?

RenanRosa

andredf:
Criar um método eu sei.
Talvez eu não esteja sendo claro.
A questão é que eu estou tendo que colocar o mesmo código nos eventos do item do menu e do botão.
Será que tem uma maneira de, a partir do evento de um dos dois, ele executar o outro evento?

então, apenas coloque o metodo no evento mousePressed/Clicked metodo actionEvent do menu e do botão:

JButton btn = new JButton("Seu Botão");
		btn.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
			}
		});

e mesma coisa pro menuItem, apenas muda de btn para o nome do objeto

A

RenanRosa:
andredf:
Criar um método eu sei.
Talvez eu não esteja sendo claro.
A questão é que eu estou tendo que colocar o mesmo código nos eventos do item do menu e do botão.
Será que tem uma maneira de, a partir do evento de um dos dois, ele executar o outro evento?

então, apenas coloque o metodo no evento mousePressed/Clicked metodo actionEvent do menu e do botão:

JButton btn = new JButton("Seu Botão");
		btn.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				
			}
		});

e mesma coisa pro menuItem, apenas muda de btn para o nome do objeto

Aí é que está minha dúvida.
Eu terei que repetir o mesmo código em ambos os eventos ou posso colocar o código do método em apenas um deles e o outro evento executar esse mesmo código?

Anime

Oi,

Não precisa repetir o metodo, é só chamar…

public void nomeMetodo(){
// coloca o que quer que faça
// codigo do metodo
}



nomeMetodo();// chama o metodo, vc vai colocar isso no lugar do código do metodo
RenanRosa

cara, você sabe adicionar um .addActionListener?
pois então, dentro dele tem o metodo que é chamado quando o mouse clica, apenas coloque o metodo que tem todos os comandos que quer que execute quando clicar
assim coloque o mesmo metodo em todos os clicks, tanto menu quanto botão, se tiver com dúvida posta seu código.

A

RenanRosa:
cara, você sabe adicionar um .addActionListener?
pois então, dentro dele tem o metodo que é chamado quando o mouse clica, apenas coloque o metodo que tem todos os comandos que quer que execute quando clicar
assim coloque o mesmo metodo em todos os clicks, tanto menu quanto botão, se tiver com dúvida posta seu código.

É justamente isso. Eu terei que duplicar o código em mais de um addActionListener?

Não há como evitar a duplicidade de código?

No botao.addActionListener eu coloco o código a ser executado e no itemMenu.addActionListener eu chamaria o botao.addActionListener. Há como fazer isso?

lucas_vieira

Crie o evento separadamente…

private void jTBON_OFFActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(jTBON_OFF.isSelected())
        {
            jTBON_OFF.setText("OFF");
            jLOFF.setVisible(false);
        }
        else
        {
            jTBON_OFF.setText("ON");
            jLOFF.setVisible(true);
        }


    }

Aew o que vc precisa fazer é vincular o action listener…

*obs: o método"jTBON_OFFActionPerformed(evt);" é chamado passando o objeto ‘evt’ como parâmetro

JButton jTBON_OFF = new JButton();
jTBON_OFF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTBON_OFFActionPerformed(evt);
            }
        });

E se for preciso usar o mesmo método basta adicionar um action listener e chamar o mesmo método.

JButton jTBLiga_desliga = new JButton();
jTBLiga_desliga.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTBON_OFFActionPerformed(evt);
            }
        });

Espero ter ajudado.

Abraço

Criado 15 de maio de 2011
Ultima resposta 15 de mai. de 2011
Respostas 10
Participantes 5