Estou estudando Java, e para aplicar os conceitos estudados resolvi tentar criar uma calculadora. A interface é composta basicamente de um JLabel (para exibir os números digitados e o resultado da conta) e dos JButton (para os números).

Cada vez que o usuário clicar em um número, o mesmo será adicionado ao final do número exibido no JLabel, para compor o número que será utilizado na operação. Essa foi a primeira ideia que me veio em mente, mas acho que depois tentarei fazer de uma forma diferente pra ficar “mais bonito”, rsrsrs :D.
Como ao iniciar o programa, o conteúdo do JLabel é desnecessário, eu faço uma verificação que retorna vazio caso o texto no JLabel seja o texto padrão (no caso, para testar, “teste de label”). Para não ter que verificar isso em cada tecla pressionada, eu sobrescrevi o método getText() do JLabel, colocando essa verificação lá:
private JLabel display = new JLabel("teste de label") {
@Override
public String getText()
{
if ("teste de label".equals(super.getText())) {
return "";
} else {
return super.getText();
}
}
};Assim posso deixar o código em cada tecla dessa forma:
bt1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
display.setText(display.getText() + "1");
}
});Ou seja, caso o conteúdo no JLabel seja o texto padrão, então atualizo ele setando vazio + o número pressionado.
Caso o conteúdo no JLabel não seja o texto padrão, então seto o conteúdo anterior + o número pressionado.
O problema é que, por algum motivo, quando a instância do JLabel é criada, o seu conteúdo não está sendo definido conforme o texto que passei por parâmetro (private JLabel display = new JLabel(“teste de label”)), e sim o texto que é retornado pelo getText() que sobrescrevi.
A dúvida é se o JLabel pode estar usando o método getText() em algum momento para setar o texto no label, executando o getText() que criei e causando esse problema, ou isso pode ser devido a outro motivo?