Можете ли вы поставить SpringLayout "esque" ограничения на CardLayout?

У меня есть макет карты, который может переключаться между панелями с помощью JComboBox. Проблема в том, что когда я изменяю размер окна, моя панель внутри никогда не меняет размер. Когда бы я ни использовал SpringLayout, я мог просто сказать что-то, чтобы он оставался на расстоянии х пикселей от границы, и это изменило бы размер самого себя. Как я могу имитировать это в CardLayout?

1 ответ

Когда бы я ни использовал SpringLayout, я мог просто сказать что-то, чтобы держаться на расстоянии х пикселей от границы

Вы можете добавить Border на панель, которую вы используете для CardLayout,

JPanel cards = new JPanel(new CardLayout());
cards.setBorder( new EmptyBorder(10, 10, 10, 10) );
cards.add(card1, "card1");
cards.add(card2, "card2");

Теперь каждая дочерняя панель будет иметь границу 10 пикселей вокруг панели. Вы также можете добавить Границы на отдельные панели карт. Прочитайте раздел учебника Swing о том, как использовать границы, для получения дополнительной информации и рабочих примеров.

... и это изменило бы размеры себя. Как я могу имитировать это в CardLayout? Как я могу имитировать это в CardLayout?

CardLayout просто содержит другие панели. Вам по-прежнему необходимо установить макет каждой панели, которую вы добавляете на панель карты, таким образом, чтобы компоненты изменяли размер.

В учебнике по Swing также есть раздел How to Use CardLayout с рабочей демонстрацией, которая показывает расположение компонентов, изменяющихся при изменении размера рамки. Если вы хотите, чтобы размер компонента был изменен, вам нужно будет использовать другой менеджер раскладки для каждой панели, которую вы добавляете в CardLayout.

Другие вопросы по тегам