Песочные часы с графическим интерфейсом Java Swing
-
20-09-2019 - |
Вопрос
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
- Отображение индикатора выполнения или анимированного изображения на стеклянной панели.
- Скрыть стекло после выполнения задачи
- Восстановить курсор по умолчанию