Как предотвратить изменение порядка строк в JTabbedPane со строками вкладок? - PullRequest
3 голосов
/ 15 февраля 2012

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

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

Редактировать: попытка уточнить: перемещение строк, а не перемещение вкладок внутри строк.

1 Ответ

0 голосов
/ 15 февраля 2012

Извиняюсь за ответ на мой собственный вопрос, но простой обходной путь для моей проблемы - это захват индекса вкладки при первом щелчке в моем MouseAdapter и выполнение двойного щелчка по работе, используя захваченное значение, а не tabPane.getSelectedIndex(), которая является текущей при обнаружении второго щелчка:

if (evt.getClickCount() == 1 && evt.getComponent() == tabPane) {
    currentTabIndex = tabPane.getSelectedIndex();
}
else if (evt.getClickCount() == 2 && evt.getComponent() == tabPane) {
    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                //double-clicked a tab
... {snip}
}

Это не препятствует перемещению строк вкладок, но первая нажатая вкладка выбирается для отображения, как и ожидалось пользователем.

Кроме того, наличие отдельного интерактивного элемента управления, позволяющего пользователю запрашивать полное отображение содержимого вкладки, вероятно, предпочтительнее этого неуклюжего двойного щелчка, как предложил camickr (спасибо!).

...