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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top