Desabilitar temporariamente o clique do cursor

2 respostas
AMON-HA

Tem um momento na minha aplicação que é executado um processo um pouco demorado…
Nesse tempo, coloco o meu cursor no modo de espera (WAIT_CURSOR)… e retorno para o modo default quando o processo termina…
O problema é que durante o tempo em que ele está no modo “WAIT_CURSOR” é possível ainda continuar usando o programa…
Queria que continuasse sendo possível movimentar o cursor na janela, porém a opção de clique fosse desabilitada até o processo terminar… impedindo o usuário de abrir alguma coisa no programa…

Alguém sabe como posso resolver isso?

2 Respostas

ViniGodoy

Opção 1 (melhor): Abra um JDialog modal na frente do seu programa com um texto pedindo para seu usuário aguardar e, preferencialmente, com uma barra de progresso. Se possível, você pode até colocar a opção de cancelar nessa janela também.
Opção 2 (pior): Coloque um Glasspane sobre sua janela: http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html#glasspane

PS: Estou assumindo que sua dúvida é de Swing. Ficou difícil saber é Swing ou web pois vc abriu no fórum de “Java Avançado”. Se for Swing, o local certo seria “Interface Gráfica”. Para web, “Desenvolvimento web”. Se for outra tecnologia, seria bom olhar a descrição dos fóruns para ver o local onde mais se encaixa.

AMON-HA

Fiz usando GlassPane… Mas só conseguir bloquear o clique do cursor…
Como eu posso bloquear o teclado também?

final JPanel glass = new JPanel(); glass.addMouseListener(new MouseAdapter() {}); glass.addMouseMotionListener(new MouseMotionAdapter() {}); glass.setOpaque(false); janelaPrincipal.setGlassPane(glass); glass.setVisible(true);
PS: não usei a “opção 1” porque a barra de progresso já se encontra na janela principal…

Criado 18 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 2
Participantes 2