JLabel não inicia com o texto passado por parâmetro para o construtor

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?

Se o JLabel estiver se desenhando vazio, está certo. Afinal, você disse no getText que para esse texto, ele deve se desenhar vazio.

Se você está fazendo uma calculadora, vai gostar de ver esse tópico:
http://www.guj.com.br/java/140986-como-acionar-os-bots-de-uma-calculadora-atrav-do-teclado

Finalmente, abra tópicos de interface gráfica no fórum de interface gráfica, não no de Java Básico.

Obrigado pela resposta!

Debugando o aplicativo, verifiquei que o getText() é utilizado pelo método installComponents da classe BasicLabelUI:

protected void installComponents(JLabel c){ BasicHTML.updateRenderer(c, c.getText()); c.setInheritsPopupMenu(true); } Vou dar uma pesquisada sobre esse método pois, realmente, o uso do getText() nele retorna vazio conforme especifiquei no método sobrescrito, e que está sendo setado no label.