im, выполняющие функцию поиска для базы данных, которая использует jtabbedpane с одной вкладкой для быстрого поиска, а другая для расширенного поиска. в расширенном поиске есть еще несколько полей, поэтому оно должно быть больше, но я не хочу, чтобы все окно всегда было в наибольшем размере по эстетическим соображениям. я добавил слушателя изменений на панель и попытался изменить размер панели на основе той вкладки, которую она представляет, и код выполняется при нажатии на вкладку, но ничего не делает. ive попробовал использовать tabbedSearchPane.setSize(), за которым следует tabbedSearchPane.validate(), а также изменение размеров компонентов вокруг него с помощью setSize + validate, и ничего, кажется, ничего не делает. Мне просто нужно знать, как НАЗНАЧИТЬ размер jtabbedpane.jtabbedpane вкладки разного размера
ответ
Как описано в Preferred Size in Tabs, и, как вы заметили, JTabbedPane
пытается очень тяжело сделать, чтобы разместить самую большую панель. Чтобы переключиться с большей на меньшую, вам нужно заменить большую панель на временную, имеющую тот же размер, что и меньший, и invalidate()
панель с вкладками; обратное нужно идти в другую сторону. Это борьба. В качестве альтернативы рассмотрите использование CardLayout
, упомянутый here. По мере того, как вы захотите изменить размер контейнера, обратите внимание, как это связано с example соответственно pack()
.
Я решил эту проблему, как это без проблем. (Моя вкладками панель наследуется в другой панели, если она играет никакой роли)
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
switch (tabbedPane.getSelectedIndex()) {
case 0:
tabbedPane.setPreferredSize(new Dimension(1, 230));
break;
case 1:
tabbedPane.setPreferredSize(new Dimension(1, 330));
break;
case 2:
tabbedPane.setPreferredSize(new Dimension(1, 430));
break;
}
}
});
и, конечно же, когда я создаю мой JTabbedPane:
tabbedPane.setPreferredSize(new Dimension(1, 230));
я перекрашивать-перепроверить и jtabbed/parentpanel и после это, но по другим причинам ... Кажется, что это работает, даже не называя перепланировку/повторную проверку в любой из панелей.
Preview (Красная граница = другая панель)
- 1. Изменение размера вкладки вкладки JTabbedPane для соответствия
- 2. JTabbedPane без заголовка вкладки
- 3. Удаление рамки вкладки JTabbedPane
- 4. Изменение размера для заголовка JTabbedPane
- 5. Изменение размера JScrollPane и JTabbedPane
- 6. Как сфокусировать JtabbedPane создать вкладки
- 7. JTabbedpane удалить границу с вкладки
- 8. JTabbedPane: Изменить название изнутри вкладки
- 9. Как перетащить вкладки в JTabbedPane
- 10. JTabbedPane не меняет содержимое вкладки
- 11. JTabbedPane: изменить размер вкладки при изменении вкладки вкладки
- 12. Multiply массив разного размера
- 13. Изготовление плитки разного размера
- 14. OpenCV Матрица разного размера
- 15. массив массивов разного размера
- 16. Заполнение макета разного размера
- 17. Входы разного размера bootstrap
- 18. Эффективно маркеры разного размера
- 19. Flickr Json разного размера
- 20. Сравнение массивов разного размера
- 21. Изменение размера JScrollPane на JTabbedPane
- 22. JtabbedPane внутри JtabbedPane
- 23. Как переключить вкладки в jTabbedPane, нажав кнопку?
- 24. Как получить координаты заголовка вкладки в jTabbedPane?
- 25. Как изменить имя вкладки в JTabbedPane
- 26. Получить JTable из выбранной вкладки в JTabbedPane
- 27. JTabbedPane сначала отображает неправильные компоненты вкладки
- 28. Приведение вкладки к передней панели в JTabbedPane
- 29. Можно ли разместить вкладки внутри JTabbedPane (JPanel)?
- 30. Центрирование JTabbedPane, но не фактические вкладки
Это лучшее объяснение поведения я нашел на SO. Когда вы говорите 'invalidate()' это то, что называется 'tabLarge.Invalidate()', когда вы меняете? Я изо всех сил пытаюсь подумать, как это сделать. – Pureferret
Нет 'invalidate()' просто отмечает контейнер как необходимый макет при последующих 'validate()' или 'pack()'. – trashgod
Итак, мне нужно удалить содержимое других вкладок и заменить панель пустых времен при включении? Как вы получаете такое поведение ... changeListener? – Pureferret