Por que o botão não esta funcionando ?, não entra no if ?
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculo extends JFrame implements ActionListener{
JLabel nome;
JButton btn;
JTextField txt;
Calculo()
{
super(“Mandar Nome”);
JLabel nome = new JLabel ("Nome: ");
JTextField txt = new JTextField (50);
JButton btn = new JButton(“Mandar Nome”);
setLayout(new FlowLayout());
add(nome);
add(txt);
add(btn);
setVisible(true);
pack();
btn.addActionListener(this);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculo c = new Calculo();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==btn)
{
txt.setText("");
}
}
}
Objetos se comparam com equals, tente e.getSource().equals(btn) (ainda não sei se entrará no if, pois não sei o que o e.getSource() retorna)
Obs: seja mais claro no título do seu tópico e ao postar código, deixe o código todo com a tag
No caso dele ele está certo em comparar com == pois ele quer comparar a referência.
O botão funciona perfeitamente, não está entrando no if pois você está testando se o getSource() do evento é a variável de instância btn, entretanto em lugar nenhum você inicializou a variável de instância btn.
Aliás, nenhuma das variáveis de instância foi inicializada, ao invés disso você criou variáveis locais dentro do construtor.
Dica, não é legal sua classe implementar o ActionListener, dessa forma você tem que ficar fazendo if pra saber quem disparou algum evento. O ideal é criar um listener para cada tratamento de evento.
Eu dei uma refatorada no seu código, veja como fica mais simples:
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Calculo extends JFrame {
public static void main(String[] args) {
Calculo janelaCalculo = new Calculo();
janelaCalculo.setVisible(true);
}
JLabel nome;
JButton btn;
JTextField txt;
Calculo() {
super("Mandar Nome");
nome = new JLabel("Nome: ");
txt = new JTextField(50);
btn = new JButton("Mandar Nome");
setLayout(new FlowLayout());
add(nome);
add(txt);
add(btn);
pack();
// usando uma expressão lâmbda pra tratar o evento quando este botão for pressionado
btn.addActionListener(event -> pressionouBotaoMandarNome());
}
// este método será invocado sempre que pressionar o botão "Mandar Nome"
private void pressionouBotaoMandarNome() {
// assim não precisa de if nenhum
txt.setText("");
}
}
1 curtida