Problema Java 8 + Janelas


#1

Bom dia pessoal!

Seguinte pessoal, estou apenas executando o Adempiere pelo Java 8, no código fonte, etc segue o padrão do Adempiere (Java 6) e me esta ocorrendo o seguinte problema.

Em algumas janelas específicas, que foram criadas por nós (PDV, etc), em determinado momento colocamos para bloquear alguns campos (setEnabled(false)), porém, ao executar a função de habilita-los novamente, os campos de textfield parecem “travados” e não permite digitar…

E isso só está acontecendo rodando com o Java 8… alguém já viu isso? tem alguma ideia do que pode ser?

Obrigado


#2

Olá Geizon, bom dia!

Dá uma olhada se o método setEnabled teve mudanças do Java 6 para o Java 8. Eu me lembro que quando mudamos do Java 5 para o 6 tivemos um problema parecido, tinha um método setVisible que havíamos criado no CTextField e o Java 6 passou a ter um método com o mesmo nome no JTextField, como o CTextField extende ao JTextField ocasionava o problema. Seu problema deve ser algo parecido.

Abs!


#3

Bom dia Ricardo,

Estava olhando aqui e acredito ter encontrado o problema…porém ainda não descobri a solução ehehe

Meu problema encontra-se no PDV e em algumas outras janelas que são criadas separadamente (Formulários Especiais).

Dentro dessa janela do PDV por exemplo (ela extende um JPanel e implementa um FormPanel, ActionListener, WaitingController).

Esse WaitingController é uma mensagem de espera dentro dessa janela do PDV.

@Override
public void startWait(String text, boolean canNotWait, int timer){
	if(wait!=null){
		stopWait();
	}
	wait = new WaitingPDV(m_frame, text, canNotWait, timer);
	wait.setModal(true);
	AEnv.showCenterWindow(m_frame, wait);
}

Dai quando quero colocar uma mensagem de bloqueio faço:

startWait("Preparando impressão NF-e...", false, 1);

E pra encerrar só coloco um stopWait();

@Override
public void stopWait(){
	if(wait != null){
		wait.dispose();
		wait = null;
	}
}

Dai nesse caso acredito que o Adempiere esteja se perdendo no controle das janelas e fazendo esta “trava” dos campos…e ao meu ver o problema esta no stopWait() … pois quando eu exibo a mensagem consigo editar ainda o campo…


#4

Esqueci de mencionar Ricardo um detalhe que é importante…

AEnv.showCenterWindow(m_frame, wait);

Se eu comentar essa função acima, usando o Java 6 dai ocorre o mesmo problema de travar o campo do que o 8…e ainda as janelas não são tratadas corretamente. Acredito que seja aqui o ponto principal do problema.


#5

Ricardo,

Em tese resolvi aqui removendo essa função:

AEnv.showCenterWindow(m_frame, wait);

Dai peguei e adicionei um outro código para centralizar a janela e aparentemente resolveu meu problema.