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:
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