setText (aparentemente) desnecessário em método

E ai pessoal!
Meu primeiro post, estou recém aprendendo Java e muita dúvida tirei aqui, mas agora preciso de um help!!

Preciso de um botão que gera outro botão idêntico ao ser clicado (vou lhes poupar dos detalhes e porquês).
Para isso tenho o código abaixo, que funciona:

public class Painel extends javax.swing.JFrame {
    
    Painel () {
        ... // Layout, closeOperation, setVisible, setSize, etc...
        add(new Botao());
    }
    
    class Botao extends javax.swing.JButton {
        
        Painel essePainel = Painel.this;
        
        
        Botao () {
            addActionListener((ActionEvent e) -> {
                essePainel.add(new Botao());         //se quem cria o novo botão é esse add
                setText("texto qualquer");           //porque esse setText??
            });
        }
    }
}

Preciso colocar aquele setText ali pra funcionar, se não simplesmente não cria novos botões!
Se eu deixo sem ele simplesmente não funciona!!!
Como me livro desse setText?

testei substituir o setText por setBackground e alguns outros métodos, nada…
testei criar outros objetos além de JButton, nada…
não posso usar um setText("") vazio, tem que ter algum caractere ao menos

desde já agradeço

Provavelmente está criando, porém como não tem nenhum texto setado ele , acaba que não é possível ser visualizado, é oque acho.

Creio que não é o caso porque o setText está colocando o texto no botão que clico, e não no que é criado. Quando clico, o botão novo que aparece vem sem texto algum, o que cliquei que aparece o texto.

Ao invés de você criar uma classe que extend de JButton, é mais fácil e melhor criar um objeto JButton.

[code]JButton botao1 = new JButton();
botao1.setText(“Botao1”);

botao1.addActionListener(e -> {
JButton botao2 = new JButton();
botao2.setText(“botao2”);
essePainel.add(botao2);

});
[/code]

preciso da implementação, esse aí é um resumo do código apenas, no programa que estou montando o construtor desse botão é maior
de qualquer forma, ainda acabo usando o setText, não queria precisar dele

Se alguém quiser replicar, esse código aqui compila e demonstra o problema:

import java.awt.FlowLayout;
import javax.swing.JButton;

public class Painel extends javax.swing.JFrame {

    static public void main(String[] args) {
        new Painel();
    }


    Painel essePainel = Painel.this;

    Painel () {
        setLayout(new FlowLayout());
        setVisible(true);
        setDefaultCloseOperation(3);
        setSize(400,400);

        JButton botao1 = new JButton();
        add(botao1);

        botao1.addActionListener(e -> {
            JButton botao2 = new JButton();
            botao1.setText("porque preciso setar esse texto??");
            essePainel.add(botao2);
            botao2.setText("pra criar esse botão");
            });
    }
}

Eu acredito que seria melhor assim:

public class Painel extends JPanel {
/* Não é necessário informar o caminho inteiro da herança, importa todo o swing. E seria interessante
 criar um JFrame dentro da classe que contém o método main  e ai você cria essa classe Painel extendendo JPanel */

public Painel () {
    inicializarComponentes();
    definirEventos();
}

public void inicializarComponentes() {
//Title, layout, etc
variabelBotao = new JButton("Texto do botão");
variavelBotao.setBounds(x, x, x, x); // Define onde ela vai ficar se o layout é null
this.add(variavelBotao);


  public void definirEventos() {
        //Aqui vai o código dos eventos do botão

}