Erro ao atualizar Jlabel

4 respostas
mauricionik

PessoALL

estou com um poblema que deve ser cliente antigo de vocês.
tenho um jlabel que ao ser atualizado de de forma rápida (como em um loop)
ele “trava” ou seja, só mostra o primeito setText e o resto não mostra mais.

o código já foi postado em outra ocasião pela mesma dúvida.

http://www.guj.com.br/posts/list/227385.java

se puderem me ajudar eu agradeço.

obrigado.

4 Respostas

leonardobhbr

Utilize o codigo abaixo

SwingUtilities.invokeLater(new Runnable() { public void run() { label.setText("Aqui"); } });

mauricionik

leonardobhbr:
Utilize o codigo abaixo

SwingUtilities.invokeLater(new Runnable() { public void run() { label.setText("Aqui"); } });

Não sei se está certo da forma que eu utilizei mas conitinua não dando certo.
A fim de fazer testes coloquei um MessageDialog e somente apareceu no primeiro setText do código
://

public static void atualizaBarraProgressoTitulo(final String texto) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JOptionPane.showMessageDialog(null, texto);
                barraProgessoTitulo.setText(texto);
            }
        });
        //JOptionPane.showMessageDialog(null, texto);

        //barraProgessoTitulo.paint(barraProgessoTitulo.getGraphics());
        //barraProgessoTitulo.revalidate();
        //barraProgessoTitulo.repaint();
        //System.out.println(texto);
        //barraProgessoTitulo.repaint();
        //barraProgessoTitulo.updateUI();
        //barraProgessoTitulo.paintAll(barraProgessoTitulo.getGraphics());
    }
leonardobhbr

Esse JOptionPane e pra q ele q ta avacalhando o seu label na verdade…

Ele fica no primeiro ou nao da nem tempo de ver o processo?

Se quiser coloque um Thread.sleep(1000) para visualizar o label

ou entao ao inves do invokeLater substitua por invokeAndWait

ViniGodoy

Você deve criar uma Thread separada para fazer seu processamento. Equanto você fizer na mesma thread que o ActionListener do seu botão, o Swing estará travado, esperando o processamento do botão acabar para repintar a tela.

Para mais informações:
http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html

Outra coisa, se é a mesma dúvida, não tem porque duplicar o tópico. Simplesmente volte ao seu tópico original e explique para o pessoal o que não funcionou nas sugestões que eles deram.

Esse tópico será trancado.

Criado 20 de dezembro de 2010
Ultima resposta 20 de dez. de 2010
Respostas 4
Participantes 3