Java JTabbedPane переключить вкладку немедленно - PullRequest
1 голос
/ 17 апреля 2011

У меня есть простой компонент JTabbedPane с двумя вкладками.Когда на одной из вкладок запускается событие кнопки, я хочу, чтобы текущее представление было сразу установлено на другой вкладке .Я могу успешно заставить текущую вкладку переключаться с помощью setSelectedIndex (int) в методе actionPerformed рассматриваемой кнопки, но иногда для завершения оставшейся функциональности события кнопки может потребоваться некоторое время.

Может показаться, что изменение setSelectedIndex (int) происходит не сразу, а только после завершения тела метода actionPerformed, который был вызван нажатием / нажатием кнопки.

Причина, по которой я хочу переключать вкладки при нажатии / нажатии кнопки, заключается в том, что пользователь может видеть сообщение в текстовой области на другой вкладке, говорящее ему «обработка, подождите» и т. Д., Пока остальная часть нажатия кнопкифункциональность осуществляется.Результаты этой функциональности, когда они появятся, заменят сообщение «... пожалуйста, подождите».

Итак, сейчас происходит то, что я нажимаю кнопку, и она останавливается на этой вкладке до тех пор, пока функция кнопки не будет завершена.полностью, а затем он переключается.Так что сообщение "... пожалуйста, подождите" на самом деле никогда даже не видно.

Я не уверен, что делать.Возможно, создайте новый поток для «функциональности», и пусть событие нажатия кнопки запускает поток, чтобы событие кнопки могло завершиться и переключать вкладки в ожидании результатов.Просто мысли вслух.Любая помощь приветствуется.

-Rob

1 Ответ

2 голосов
/ 17 апреля 2011

Мне кажется, что у вас есть проблема с многопоточностью больше, чем что-либо, что это замораживает ваш GUI, делает его полностью не отвечающим до его завершения и, таким образом, задерживает обмен панелями с вкладками.Если вы выполняете какие-либо длительные процессы в вашем методе выполнения действий, вместо этого выполняйте их в фоновом потоке, например, предоставляемом SwingWorker, и тогда ваш графический интерфейс станет более отзывчивым.

Подробнее об этом см. В этом руководстве: Параллельность в Swing

Если, несмотря на этот совет, у вас все еще есть проблемы, то, скорее всего, вы собираетесьчтобы опубликовать часть вашего оскорбительного кода.Лучше всего, если бы вы могли создать небольшое скомпилируемое и работающее приложение, которое воспроизводит проблему, SSCCE .

¡Que tengas suerte!

...