Вывод вкладки на передний план в JTabbedPane
-
22-07-2019 - |
Вопрос
Когда я использую setSelectedComponent
или setSelectedIndex
на JTabbedPane
объект, панель всегда появляется в моем пользовательском интерфейсе.Однако иногда вкладка, связанная с панелью, остается скрытой.Другими словами, вкладка не прокручивается до видимой части панели с вкладками.
Как я могу это исправить?Я попробовал дрянной select one index, затем выберите нужный индекс, а также несколько других более элегантных вещей, но arrrrgh!!
Помоги мне, если сможешь.
Спасибо, Тодд
Решение
Я думаю, что ваш звонок сделан не по EDT.Оберните его SwingUtilities.invokeLater
Другие советы
Вот шаблон, который вы можете использовать, если у вас есть метод, который изменяет компоненты swing или их модели и поэтому должен вызываться в EDT, но может быть вызван из фонового потока.Это обеспечивает функция всегда работает на EDT:
void func(final Type1 arg1, final Type2 arg2) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
func(arg1, arg2);
}
});
return;
}
// method code goes here
}