Java Swing Gui Hour Glass
-
20-09-2019 - |
Pergunta
Existe um JTabbedPane
No meu Balanço programa. Quando o usuário clica em uma guia, o programa leva um tempo para obter os dados e processar os resultados e mostra os resultados na guia selecionada.
Como posso exibir uma hora de vidro, ou algo desse efeito para que o usuário saiba que são dados de processamento? Para não clicar na guia novamente antes de terminar o trabalho.
Solução
UMA JProgressBar (Possivelmente no modo indeterminado) soa bem - coloque -o na guia até que os dados sejam buscados. Uma interface do usuário bem projetada não deve forçar o usuário a aguardar as tarefas de longa duração e, em vez disso, permitir que eles façam outra coisa entre.
Outras dicas
A maneira mais simples é apenas ligar setCursor no componente apropriado (provavelmente a janela de nível superior) com o apropriado Cursor.
component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
E depois coloque -o de volta quando terminar.
component.setCursor(Cursor.getDefaultCursor());
O setCursor (int) está depreciado. Provavelmente isso é um pouco mais limpo:
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Como as outras respostas mencionam, você pode definir um cursor de espera, mas também menciona a prevenção de cliques adicionais do mouse. Você pode usar um painel de vidro para evitar cliques nos componentes até que a operação longa seja concluída. Em adição ao Tutoriais do sol No painel de vidro, há um bom exemplo em http://www.java2.com/code/java/swing-jfc/demonstrateuseofglasspane.htm
Eu faria como outro mencionado
- Mude o cursor
- Use um trabalhador de swing
- Exibir a barra de progresso ou uma imagem animada no glasspane
- Esconder o glasspane quando a tarefa for concluída
- Restaure o cursor padrão