Tem Hora que a Tela não carrega (SWING)

8 respostas
dudu_sps

galera to com um problema…
tem hora que minha tela swing não carrega por completo… aparece apenas a borda da janela… e em telas de finalização de operação isso não pode ocorrer??

o que pode ser?

8 Respostas

ViniGodoy

Geralmente quando isso ocorre é pq alguma exceção disparou no Swing. Verifique seus logs de exceção.

S

nesta janela está exibindo algo que está sendo processado? se sim, você deverá criar esse processamento em outra Thread.

M

As causas mais comuns já foram ditas: processamento excessivo na Thread do Swing (por isso não é desenhada a tela) ou alguma exceção que ocorre.

dudu_sps

bom… fiz uma classe para verificar erros do meu sistema

segue o codigo:

public class LogExceptions implements Thread.UncaughtExceptionHandler {   
    public void uncaughtException(Thread t, Throwable e) {   
        JOptionPane.showMessageDialog( null, e.toString());   
    }
}

devo chamar essa classe em todas as janelas??

dudu_sps

UP… alguem sabe??

dudu_sps

intão… algumas das janelas não é processado nada no carregamento da tela

somente passado alguns parametros por windowsopened

o que pode ser??
como posso arrumar o erro??

dudu_sps

Andei dando uma pesquisada e achei uma classe que trata erros ao qual não são tratados

mais o problema é que minha janela é modal e não ta pintando

será que tenho que dar um comand para pintar??

vai a classe que achei

public class MyExceptionHandler implements Thread.UncaughtExceptionHandler {  
	
	
	public void uncaughtException(final Thread t, final Throwable e) {        
		if (SwingUtilities.isEventDispatchThread()) {            
			showException(t, e);        
		} else {            
			SwingUtilities.invokeLater(new Runnable() {                
				public void run() {                    
					showException(t, e);                
				}            
			});        
		}    
	}    
	
	private void showException(Thread t, Throwable e) {             
				logException(t, e);        
				Erro.er(e);
				
		}    
	
	private void logException(Thread t, Throwable e) {       
		// todo: start a thread that sends an email, or write to a log file, or        
		// send a JMS message...whatever    
		}
	
}
ViniGodoy

Esse seu exception handler não faz nada. Ou você retira ele, ou efetivamente implementa o que o comentário ali está pedindo.
Caso contrário, sua aplicação simplesmente parará de aprensentar para você os erros.

De qualquer forma, fica muito difícil te ajudar, já que não temos em mãos seus códigos fonte. Uma boa é usar um depurador e depurar o processo de criação da sua janela. Talvez vc veja onde a exceção está sendo disparada.

Criado 19 de abril de 2010
Ultima resposta 6 de mai. de 2010
Respostas 8
Participantes 4