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…
//...............
JButton BtSoma=new JButton("Somar");
JButton BtLimpa=new JButton("Limpar");
//açao para os botoes
BtSoma.addActionListener(this);
BtLimpa.addActionListener(this);
}
public void actionPerformed(ActionEvet e)
{
n1= Integer.parseInt(TextN1.getText());
n2= Integer.parseInt(TextN2.getText());
soma=n1+n2;
labelResult.setText("Resultado: "+String.valueOf(soma));
}
public void actionPerformed(ActionEvent e)
{
TextN1.setText("");
TextN2.setText("");
}
mas como ta ai nao tem como eles saberem quem é de quem…
valeu… t+
tem algumas formas de voce fazer isso…
ou voce faz uma classe ActionListener pra cada botão…
ou você usa um só, e testa qual foi o botão apertado, assim:
public void actionPerformed(ActionEvent ae) {
JButton botao = (JButton)ae.getSource();
if (botao==meubotao1) {
//botao um apertado
} else if (botao == meubotao2) {
//botao dois apertado
}
}
ou então você define seu ActionListener no proprio parametro, o que geralmente é mais útil:
seubotao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//codigo que deve rodar quando apertar o botao
}
});
assim você pode usar um novo actionlistener pra cada botao…
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
Outra maneira de o fazeres seria criares um mouseListener e reescreveres o método mouseClicked(), adicionando-o depois ao botão que entenderes.
Exemplo: [code] mouseListener l = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//Acções a fazer
}
};
botao.addMouseListener(l);
[/code]
hmmm… muito boa essa maneira SrFabio! obrigado!
Porq nao ta funcionando?
// Somar
MouseListener mais = new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
numero = numero + Integer.parseInt(text.getText());
}
};
BtMais.addMouseListener(mais);
// Resultado
MouseListener igual = new MouseAdapter()
{
public void mosePressed(MouseEvent e)
{
label.setText(String.valueOf(numero));
}
};
BtIgual.addMouseListener(igual);
valeu
Qual é o erro que dá?
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.
O erro é nao mostrar o resultado… e dai nao da de saber se ele ta
somando também…
codigo inteiro:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class Calc extends JFrame
{
public int numero=0;
public JTextField text = new JTextField();
public JLabel label = new JLabel("resultado");
public Calc()
{
JButton BtMais = new JButton("+");
JButton BtMenos = new JButton("-");
JButton BtDividir = new JButton("/");
JButton BtVezes = new JButton("*");
JButton BtIgual = new JButton("=");
setLayout(null);
//posiciona o objetos na tela
text.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
MouseListener mais = new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
numero = numero + Integer.parseInt(text.getText());
}
};
BtMais.addMouseListener(mais);
// Resultado
MouseListener igual = new MouseAdapter()
{
public void mosePressed(MouseEvent e)
{
label.setText(String.valueOf(numero));
}
};
BtIgual.addMouseListener(igual);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setSize(640,480);
setVisible(true);
}
public static void main(String args[])
{
new Calc();
}
}
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).
mesmo com o mouseclicked continua nao funcionando… :telazul:
Olha o erro aqui: public void mosePressed(MouseEvent e)
eheh.
Putz!.. era só isso mesmo :tosco:
Brigadao cara!