JLabel modificando conforme execução

2 respostas
JuniorMcz

Boa Tarde meus caros...

Bom é o seguinte tenho uma tela de loggin conforme o codigo vai executando ele vai atualizando a Jlabel.

O Problema q nao modificando no layout, mas a variável esta.
private void txtSenhaActionPerformed(java.awt.event.ActionEvent evt) {                                         
    bd = new BancoDeDados();
    Usuario usu = new Usuario();
    Usuario usur = new Usuario();
    String n = null;

    if (n == null) {
        usu = ServicoUsuario.getInstance().consultar(txtLoggin.getText());
        try {
            jLabel5.setText("Carregando dados do Usuario.."); //QUANDO ELE PASSAR POR ESTA ETAPA ERA PARA INSERIR ESTA MSG.
            jLabel5.repaint(); 
            jProgressBar1.setValue(30);
            jProgressBar1.repaint(); //  AQUI É A MESMA COISA

            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Loggin.class.getName()).log(Level.SEVERE, null, ex);
        }




        if (usu != null) {
            usur = ServicoUsuario.getInstance().consultarSenha(txtSenha.getText());

            if (usur != null) {
                int x = 0;

                try {
                    jLabel5.setText("Carregando dados do Sistema.."); //QUANDO ELE PASSAR POR ESTA ETAPA ERA PARA INSERIR ESTA MSG.
                    jProgressBar1.setValue(60);
                    JjProgressBar1.repaint(); //  AQUI É A MESMA COISA
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Loggin.class.getName()).log(Level.SEVERE, null, ex);
                }


                frmTelaPrincipal = new TelaPrincipal();
                jProgressBar1.setValue(100);

                try {
                    JOptionPane.showMessageDialog(null, "Sistema Carregado com Sucesso!"); // SO ESTA MOSTRANDO ESTA QUANDO ESTA COMPLETO  O CODIGO.
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Loggin.class.getName()).log(Level.SEVERE, null, ex);
                }

                frmTelaPrincipal.setVisible(true);


                this.setVisible(false);
            } else {
                JOptionPane.showMessageDialog(null, "Usuario não Cadastrado");
            }
        }
    }

2 Respostas

M

Seu problema é com Threads. Você está executando o processamento na Thread de pintura do Swing.

Isso quer dizer que o Java está ocupado demais carregando sua outra tela para atualizar a interface gráfica. Além disso, quando você chama Thread.sleep você está fazendo a thread de pintura dormir (o que contribui para que a tela não seja atualizada).

Solução: fazer o carregamento da tela em outra thread e notificar a sua janela de autenticação para que ela mostre o status atual.

Talvez SwingWorker seja o que você procura.

JuniorMcz

marcobiscaro2112:
Seu problema é com Threads. Você está executando o processamento na Thread de pintura do Swing.

Isso quer dizer que o Java está ocupado demais carregando sua outra tela para atualizar a interface gráfica. Além disso, quando você chama Thread.sleep você está fazendo a thread de pintura dormir (o que contribui para que a tela não seja atualizada).

Solução: fazer o carregamento da tela em outra thread e notificar a sua janela de autenticação para que ela mostre o status atual.

Talvez SwingWorker seja o que você procura.

Olá, Blz ?
Se liga… como seria então ? pode me ajudar ???

Criado 12 de fevereiro de 2011
Ultima resposta 12 de fev. de 2011
Respostas 2
Participantes 2