Não consigo mostrar Texto em um JtextArea em outra classe

Boa tarde a todos.

Estou tentando iniciar uma aplicação onde nela vou escrever no jtextArea dados oriundos de ou outro metodo.
porém quando chamo esse método ele só escreve os dados após todo o comando da outra classe ser executado completamente.

Meu programa inicia dessa forma:
image

Após esse login inicio o código indo para o frame onde está o jTextArea:

TelaPrincipal tela = new TelaPrincipal();
tela.conectaSitef(tela);
this.dispose();

onde esse método conectaSitef contém esse código:

public void conectaSitef(TelaPrincipal main){
java.awt.EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
          
          PinPad pinpad = new PinPad(TelaPrincipal.this);
            
          pinpad.conectaSitef(TelaPrincipal.this); 
        }
    });

Esse método fica dentro do java.swing onde o texto iria aparecer dentro da caixa do jtextArea2

As mensagens vão ser inclusas dentro de um método dentro de um arquivo em que uso o código abaixo:

public class PinPad implements ActionListener{
private TelaPrincipal main;
private JCliSiTefI clisitef;
private String formaPagto;
private String parcelas;
private boolean tipoChip;
private Connection conn;
private Timer timer;
private boolean debug;
private int indice;
private String empresa;
private String filial;
private String tipo;
private String pedido;
private String valorOperacao;
private String opcao;

    public JCliSiTefI getSitef(){
    return this.clisitef;
}
    
   public PinPad(TelaPrincipal main) {
    this.main = main;
}
    

public void conectaSitef(TelaPrincipal main){
    this.main = main;
    ControleDb conexao = new ControleDb();
    conexao.conectar();
    // TelaPrincipal tela = new TelaPrincipal();
    JCliSiTefI clisitef = new JCliSiTefI ();
    
    //setTelaPrincipal(main);
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) ((dimension.getWidth() - main.getWidth()) / 2);
     int y = (int) ((dimension.getHeight() - main.getHeight()) / 2);
    main.setLocation(x, y);
    
    main.setVisible(true);
    // main.jTextArea2.setVisible(true);
    main.enableInputMethods(true);
    
    
    ///PreparedStatement pst = conexao.conexao.prepareStatement("SELECT id_ped_caixa, empresa, filial, tipo, pedido, cod_terminal, status, cod_autorizacao FROM stq.ped_caixa WHERE cod_terminal = '000001'");
    //  ResultSet rs= pst.executeQuery();
    //  while(rs.next())
    //  {
    try
    {
        AccessController.doPrivileged(new PrivilegedAction()
        {
            @Override
            public Object run()
            {
                try
                {
        //Thread.sleep(10000);
        
        //AccessController.doPrivileged(new PrivilegedAction()
        //{
        //public Object run()
        // {
        main.setAlwaysOnTop(true);
        String retorno;
        //while(rs.next())
        //{
        //retorno = rs.getString("id_ped_caixa");
        int status;
        String texto = "Inicializando PinPad";
        
        System.out.println(texto);
        main.getTela().setText(texto + System.lineSeparator());
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int proximoComando;
        clisitef.setEnderecoSiTef ("127.0.0.1");
        clisitef.setCodigoLoja ("MIL00922");
        clisitef.setNumeroTerminal ("00000009");
        status = clisitef.configuraIntSiTefInterativo ();
        main.setStatus(clisitef.configuraIntSiTefInterativo());
        
        //texto = "Iniciando : " + String.valueOf(tela.getStatus());
        //tela.getTela().setText(texto + System.lineSeparator());
        if (status != 0)
        {
            //System.out.println ("Erro na ConfiguraIntSiTefInterativo " + status);
        }
        clisitef.setModalidade (3);
        clisitef.setValor ("1");
        clisitef.setNumeroCuponFiscal ("123456");
        clisitef.setDataFiscal ("20221129");
        clisitef.setHorario ("102000");
        clisitef.setOperador ("Operador1");
        clisitef.setRestricoes ("xxxxxx");
        status = clisitef.iniciaFuncaoSiTefInterativo ();
        texto = "Inicializando PinPad 2";
        
        texto = "Iniciando: " + String.valueOf(main.getStatus());
        main.getTela().setText(texto + System.lineSeparator());
        // Thread.sleep(1000);
        while (status == 10000)
        {
            
            status = clisitef.continuaFuncaoSiTefInterativo ();
            if (status == 10000)
            {
                System.out.println ("Buffer 1 = " + clisitef.getBuffer ());
                
                texto += System.lineSeparator();
                
                String[] split = clisitef.getBuffer().split(";");
                
                for (String split1 : split) {
                    texto += split1 + System.lineSeparator();
                }
                System.out.println ("Retorno Sitef " +texto);
                
                main.getTela().setText(texto + System.lineSeparator());
                Thread.sleep(1000);
                // clisitef.setBuffer("3");
                //System.out.println("Forma Digitada");
                if (clisitef.getBuffer().trim().equals("3")){
                    //System.out.println("Tipo pagamento");
                    // clisitef.setBuffer("1");
                }
                if (clisitef.getBuffer().trim().equals("1:Cheque;2:Cartao de Debito;3:Cartao de Credito;4:Cartao Private Label;5:Confirmacao de Pre-autorizacao;6:Carteira Digital;")){
                    
                    //clisitef.setBuffer("3");//1:A Vista;2:Parcelado pelo Estabelecimento;
                    
                    
                    System.out.println ("Buffer 1 = " + clisitef.getBuffer ());
                    
                }
                else if (clisitef.getBuffer().trim().equals("13 - Operacao Cancelada?")){
                    //System.out.println ("Buffer 5 = " + clisitef.getBuffer ());
                    clisitef.finalizaTransacaoSiTefInterativo ((short) 1, "123456", "20040514", "120000");
                    clisitef.finalizaFuncaoSiTefInterativo();
                }
                while (clisitef.getBuffer().trim().equals("1:A Vista;2:Parcelado pelo Estabelecimento;")){
                    System.out.println ("Buffer 2 = " + clisitef.getBuffer ());
                    new Thread().sleep(10000);
                    clisitef.setBuffer("2");
                    
                }
                while (clisitef.getBuffer().trim().equals("Forneca o numero de parcelas")){
                    System.out.println ("Buffer 2 = " + clisitef.getBuffer ());
                    new Thread().sleep(10000);
                    clisitef.setBuffer("10");
                    
                }
                // new Thread().sleep(10000);
                
                
            }
        }
        
        // }
        // });
              }
                catch (Exception e)
                {
                    System.out.println("Erro na biblioteca");
                    System.out.println(e.getMessage());
                    return null;
                }
                return null; //Nada a Retornar
            }
        });
    }
    catch (Exception e)
    {
        // tela.getTela().setText("Problema na DLL" + System.lineSeparator());
        System.out.println("Erro 2");
        //            System.out.println(e);
        System.out.println(e.getMessage());
    }

}
}
}

o jTextArea fica em branco

Após o processamento completo ele aparece as mensagens

Na sua classe PinPad cada chamada ao main.getTela().setText deveria ser executada dentro de um SwingUtilities.invokeAndWait.

Sugiro criar um método para encapsular essa funcionalidade, já que você vai chamar ele várias vezes.

1 curtida

Vou analisar esse SwingUtilities.invokeAndWait pois nunca usei, você teria um exemplo para me mostrar?
Se sim vou ficar bastante grato.

Idêntico ao EventQueue.invokeLater que você já utiliza.