Dae pessoal! sou novo no forum, e ai vai minha duvida…
Eu vi alguns topicos aqui explicando como colocar o evento clique num botao,
mas como faço pra por o evento clique pra mais de um botao sendo que
eles fazem coisas diferentes?..
tipo…
//...............JButtonBtSoma=newJButton("Somar");JButtonBtLimpa=newJButton("Limpar");//açao para os botoesBtSoma.addActionListener(this);BtLimpa.addActionListener(this);}publicvoidactionPerformed(ActionEvete){n1=Integer.parseInt(TextN1.getText());n2=Integer.parseInt(TextN2.getText());soma=n1+n2;labelResult.setText("Resultado: "+String.valueOf(soma));}publicvoidactionPerformed(ActionEvente){TextN1.setText("");TextN2.setText("");}
mas como ta ai nao tem como eles saberem quem é de quem…
ou então você define seu ActionListener no proprio parametro, o que geralmente é mais útil:
seubotao.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){//codigo que deve rodar quando apertar o botao}});
assim você pode usar um novo actionlistener pra cada botao…
U
Uchiha_ItachiPJ
Obrigado _Renato…
consegui fazer com 5 botoes fazendo uma classe pra cada um… mas esse ai
que vc deu o exemplo eu nao consegui entender. Se der pra explicar
melhor seria uma boa…
valeu
S
SrFabioPJ
Outra maneira de o fazeres seria criares um mouseListener e reescreveres o método mouseClicked(), adicionando-o depois ao botão que entenderes.
Exemplo:
mouseListenerl=newMouseAdapter(){publicvoidmouseClicked(MouseEvente){//Acções a fazer}};botao.addMouseListener(l);
Lembra-te que para manipulares as labels tens de as ter definidas como static.
Se postares o erro será mais fácil ajudar-te porque a estrutura do código que fizeste está correcta, pelo menos a parte que mostraste.
U
Uchiha_ItachiPJ
O erro é nao mostrar o resultado… e dai nao da de saber se ele ta
somando também…
codigo inteiro:
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.JFrame;publicclassCalcextendsJFrame{publicintnumero=0;publicJTextFieldtext=newJTextField();publicJLabellabel=newJLabel("resultado");publicCalc(){JButtonBtMais=newJButton("+");JButtonBtMenos=newJButton("-");JButtonBtDividir=newJButton("/");JButtonBtVezes=newJButton("*");JButtonBtIgual=newJButton("=");setLayout(null);//posiciona o objetos na telatext.setSize(100,25);text.setLocation(5,5);getContentPane().add(text);BtMais.setSize(50,30);BtMais.setLocation(5,35);getContentPane().add(BtMais);BtMenos.setSize(50,30);BtMenos.setLocation(5,65);getContentPane().add(BtMenos);BtDividir.setSize(50,30);BtDividir.setLocation(55,35);getContentPane().add(BtDividir);BtVezes.setSize(50,30);BtVezes.setLocation(55,65);getContentPane().add(BtVezes);BtIgual.setSize(100,30);BtIgual.setLocation(5,95);getContentPane().add(BtIgual);label.setSize(100,30);label.setLocation(5,125);getContentPane().add(label);// Somar MouseListenermais=newMouseAdapter(){publicvoidmousePressed(MouseEvente){numero=numero+Integer.parseInt(text.getText());}};BtMais.addMouseListener(mais);// ResultadoMouseListenerigual=newMouseAdapter(){publicvoidmosePressed(MouseEvente){label.setText(String.valueOf(numero));}};BtIgual.addMouseListener(igual);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);pack();setSize(640,480);setVisible(true);}publicstaticvoidmain(Stringargs[]){newCalc();}}
S
SrFabioPJ
Já descobri o teu erro, que em parte é culpa minha também.
No lugar de mousePressed(MouseEvent e) coloca mouseClicked(MouseEvent e). Acontece que o mousePressed é um evento de clique prolongado, refere-se mesmo ao pressionar, enquando que o mouseClicked refere-se a cliques normais(rápidos).
U
Uchiha_ItachiPJ
mesmo com o mouseclicked continua nao funcionando… :telazul:
S
SrFabioPJ
Olha o erro aqui: public void mosePressed(MouseEvent e) eheh.