Адаптируемый размер панели, управляемой CardLayout.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Адаптируемый размер панели, управляемой CardLayout.

Сообщение Anonymous »

При использовании CardLayout я столкнулся с небольшой проблемой с его размером
Если я не установил предпочтительный размер явно (или не установил для него значение null ), CardLayout, похоже, устанавливает предпочтительный размер своего управляемого контейнера равным размеру самого большого дочернего компонента контейнера

Код: Выделить всё

public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
CardLayout cardLayout = new CardLayout();
JPanel cardPanel = new JPanel(cardLayout);
JComponent narrowTextArea = new JLabel("Narrow label");
cardPanel.add(narrowTextArea, "narrow");
JComponent wideTextArea = new JLabel("Wide label
wider and wider
one more line");
cardPanel.add(wideTextArea, "wide");
frame.add(cardPanel);
JButton cardSwitchButton = new JButton("Switch cards");
cardSwitchButton.addActionListener(e -> cardLayout.next(cardPanel));
frame.add(cardSwitchButton, BorderLayout.SOUTH);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Изображение
Если я установлю предпочтительный размер, он будет высечен в камне, даже если имеет смысл немного вырасти, чтобы соответствовать карточке большего размера

Код: Выделить всё

cardPanel.setPreferredSize(new Dimension(200, 10));
Изображение
Изображение
Если я установлю новое измерение(- 1,-1), он просто превращается в ничто

Код: Выделить всё

cardPanel.setPreferredSize(new Dimension(-1, -1));
Изображение
Как сделать так, чтобы размер панели, управляемой CardLayout, автоматически регулировался при выборе карточек разного размера?
Кроме подключения прослушивателей и ручного уменьшения/увеличения панели, надеюсь, но на данный момент я приму что угодно

Подробнее здесь: https://stackoverflow.com/questions/786 ... aged-panel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»