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?
Item de menu e botão com o mesmo comportamento
10 Respostas
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.
Eu não estou utilizando nenhuma IDE.
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();
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?
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
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?
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
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.
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?
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