Песочные часы с графическим интерфейсом Java Swing

StackOverflow https://stackoverflow.com/questions/1940966

Вопрос

Eсть JTabbedPane В моем Качать программа.Когда пользователь нажимает на вкладку, программе требуется некоторое время, чтобы получить данные и обработать результаты, а затем отображает результаты на выбранной вкладке.

Как я могу отобразить песочные часы или что-то в этом роде? чтобы пользователь знал, что он обрабатывает данные?Не нажимать на вкладку снова, пока она не завершит свою работу.

Это было полезно?

Решение

А JProgressBar (возможно, в неопределенном режиме) звучит правильно — поместите это на вкладку, пока данные не будут получены.Хорошо спроектированный пользовательский интерфейс не должен заставлять пользователя ждать завершения длительных задач, а вместо этого позволять ему делать что-то еще между ними.

Другие советы

Самый простой способ - просто позвонить установитькурсор на соответствующем компоненте (вероятно, окне верхнего уровня) с соответствующим Курсор.

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

А затем установите его обратно, когда закончите.

component.setCursor(Cursor.getDefaultCursor());

setCursor(int) устарел.Это, вероятно, немного чище:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

Как упоминается в других ответах, вы можете установить курсор ожидания, но вы также упоминаете о предотвращении дополнительных щелчков мыши.Вы можете использовать стеклянную панель, чтобы предотвратить щелчки по компонентам до завершения длительной операции.В добавок к Учебные пособия по солнечному свету на стекле есть хороший пример: http://www.java2s.com/Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

Я бы, как уже упоминалось,

  • Изменить курсор
  • Используйте SwingWorker
  • Отображение индикатора выполнения или анимированного изображения на стеклянной панели.
  • Скрыть стекло после выполнения задачи
  • Восстановить курсор по умолчанию
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top