Minha aplicação tá uma carroça! Me ajudem!

8 respostas
B

Galera,

Estou desenvolvendo uma aplicação j2se que consome os serviços de um web service. Acontece que meu formulário principal, possui 4 JTables, sendo que cada uma recebe o resultado de uma operação do web service. Porém, tenho que atualizar os resultados das JTables a cada 5 segundos. Para isso, estou usando o javax.swing.timer, porém minha aplicação ficou uma carroça.
Já tentei de tudo, mas o desempenho não melhora!!! Por favor, deem uma olhada no código da minha classe:

public class PrincipalForm extends javax.swing.JFrame 
{          
    // Método Construtor
    public PrincipalForm()
    {
        initComponents();         
        this.setExtendedState(MAXIMIZED_BOTH); // Maximiza a Janela
 
        int timer = 5000;
        ActionListener listener = new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {                                  
                // Tabela Situação dos Agentes
                SituacaoAgenteBO situacaoAgenteBO = new SituacaoAgenteBO();
                jXTableSituacaoAgente.setModel(situacaoAgenteBO.tableSituacaoAgente());                                     
                
                // Tabela Chamadas em Curso
                ListaSituacaoAtualEmCursoBO listaSituacaoAtualEmCursoBO = new ListaSituacaoAtualEmCursoBO();
                jXTableChamadasCurso.setModel(listaSituacaoAtualEmCursoBO.tableSituacaoAtualCurso());
                
                // Tabela Chamadas em Espera
                ListaSituacaoAtualEmEsperaBO listaSituacaoAtualEmEsperaBO = new ListaSituacaoAtualEmEsperaBO();
                jXTableChamadasEspera.setModel(listaSituacaoAtualEmEsperaBO.tableSituacaoAtualEspera());
            }
        };     
        new Timer(timer, listener).start();   
    }
....................
....................
...................

8 Respostas

E

O que está puxado a cavalo, no seu caso?

  • O meu web service demora muito para responder.
  • Tenho de refrescar 1000 linhas em diversas JTables e isso está demorando tempo pra burro.
    Você não disse, provavelmente porque não mediu.

Você pode tentar usar um profiler (como os que vêm com o Eclipse ou com o NetBeans) para saber quem é que gasta mais CPU na sua aplicação.

Dica: normalmente updateUI costuma ser um grande vilão nesses casos. Veja se você pode usar alguma outra coisa para refrescar a tela. (acho que se você redefiniu seu TableModel você pode definir um TableModelListener e chamar fireAlgumacoisa (não lembro de cor o nome do método).

B

Cara, meu maior problema não é com relação as tables, e sim com o resto da aplicação, menus, botoes, etc. Eu passo o mouse ou clico em cima, e o sistema demora décadas pra responder.
Mas mesmo assim, vc pode me dar um exemplo simples de como usar esse TableModelListener? Onde devo usá-lo? Procurei rapidamente no oráculo(google), mas minhas duvidas continuam.

cassio

BrunoLeonardo:
Cara, meu maior problema não é com relação as tables, e sim com o resto da aplicação, menus, botoes, etc. Eu passo o mouse ou clico em cima, e o sistema demora décadas pra responder.
Mas mesmo assim, vc pode me dar um exemplo simples de como usar esse TableModelListener? Onde devo usá-lo? Procurei rapidamente no oráculo(google), mas minhas duvidas continuam.

Está tudo executando dentro de uma única thread? Caso a resposta seja sim, esta pode ser uma das causas.

B

Sim. Então devo colocar cada JTable minha, dentro de bloco Timer?

int timer = 10000;
        ActionListener listener = new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            { 
 }
        };     
        new Timer(timer, listener).start();

Pois cada Timer, possui um thread interna, certo?

davidbuzatto

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

Até mais!

B

Caro davidbuzatto,

Dei uma lida no tópico indicado, mas meu problema é que preciso deixar esse código junto ao construtor do formulário principal. É aí que tá pegando!

Alguma sugestão :?:

E

BrunoLeonardo:
Cara, meu maior problema não é com relação as tables, e sim com o resto da aplicação, menus, botoes, etc. Eu passo o mouse ou clico em cima, e o sistema demora décadas pra responder.

Mais um ponto para o uso indevido e indiscriminado de updateUI. Deve ser isso que deve estar “matando” sua aplicação.

B

Cara desculpa a ignorancia, mas não entendi sua sugestão. updateUI? Que troço é esse? O q fazer para melhorar então?

Criado 6 de julho de 2007
Ultima resposta 6 de jul. de 2007
Respostas 8
Participantes 4