Любой способ заставить jidetabbedpane всегда показывать первую вкладку - PullRequest
0 голосов
/ 01 декабря 2009

У меня есть требование, что я должен отображать панель вкладок, но первая вкладка должна быть статической. Поэтому я попытался использовать jidetabbedpane, так как он заботится о том, что все вкладки перечислены в окне, он доступен для навигации, может показывать нужную операцию закрытия и так далее. Но единственное, чего мне не хватает, это опции: установить первый компонент статическим или фиксированным.

Есть идеи по преодолению этой проблемы?

Заранее спасибо,

Нильс Дрюс

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Звучит так, как будто требуется, чтобы некоторая главная страница всегда была быстро доступна, хотя пользователь усердно создает другие вкладки. У меня есть предложение:

Это касается вложенных JTabbedPanes. Как вы знаете, вы можете разместить вкладки на всех 4 сторонах компонента. Поэтому я бы создал «основной» JTP с одной или двумя вкладками, первой из которых, конечно же, является ваша «основная» вкладка. Затем вторая страница в этом компоненте может быть либо пустой, либо появляться, когда пользователь создает свою первую новую «вторичную» страницу. Эта вторая страница тоже должна быть JTP, возможно, с вкладками, расположенными в другом направлении; и все вновь созданные вторичные страницы будут содержаться этой "внутренней" JTP. Пользователь может пролистывать второстепенные страницы, закрывать их и все что угодно, но вкладка для главной страницы всегда будет видна за пределами внутреннего JTP.

Затем вы можете поиграть с деталями, такими как закрытие вкладок основного JTP. Теперь сделать их неподвижными не должно быть приоритетом, поскольку на этой панели всего 2 страницы.

В качестве альтернативы, вы можете поместить свое первичное и вторичное содержимое на отдельных страницах CardLayout и предоставить кнопку (или две) для быстрого перехода туда (и назад). В зависимости от того, как разложено ваше приложение, может потребоваться немного меньше места. Вы можете подключить Action к этой кнопке, запускаемой клавишей ускорения ... очень быстро, очень удобно. Это может успокоить вашего босса / клиента.

0 голосов
/ 11 августа 2016

DockingManager имеет метод с именем setTabbedPaneCustomizer, который поможет вам настроить панель с вкладками.

dockingManager.setTabbedPaneCustomizer(new DefaultDockingManager.TabbedPaneCustomizer() { @Override public void customize(JideTabbedPane aTabbedPane) { // figure out if the aTabbedPane is the first pane // getTabCount() == 1 might be a solution? if( isTheFirstPane(aTabbedPane) ) { aTabbedPane.setShowCloseButtonOnSelectedTab(false); } } });

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

0 голосов
/ 01 декабря 2009

Да. Выбросьте дизайн, который требует панелей с вкладками, с фиксированной первой вкладкой: это просто злоупотребляет компонентом за то, что он не должен был делать.

Вероятно, вы можете предотвратить переворот табуляции, подключив прослушиватель изменений и сделав так, чтобы он наложил вето или отменил изменение; но я не буду вдаваться в подробности об этом, потому что основная предпосылка настолько неверна.

...