Я добавил некоторые компоненты к JPanel
, который настроен на макет сетки, и я добавляю это к JFrame
, который установлен на макет границы. Но я хочу исправить размер панели. Когда мое окно максимизируется, размер всех компонентов увеличивается. Я хочу, чтобы панель в центре окна, с фиксированный размер, даже если окно максимально.Фиксированный размер панели в кадре
ответ
Поместите панель с GridLayout
в качестве одного компонента в GridBagLayout
без ограничений - он будет центрирован. Добавьте панель с GBL в CENTER
из BorderLayout
.
См this example для вышеуказанного изображения.
Nested Layout Example также использует GBL для центрирования изображения в нижней части свитка панели справа.
+1 для приятного изображения и короткого решения. – brimborium
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
JPanel rootPanel = new JPanel();
frame.getContentPane().add(rootPanel, BorderLayout.CENTER);
rootPanel.setLayout(new GridBagLayout());
JPanel contentPanel = new JPanel();
Dimension dimension = new Dimension(300, 300);
contentPanel.setMaximumSize(dimension);
contentPanel.setMinimumSize(dimension);
contentPanel.setPreferredSize(dimension);
contentPanel.setBackground(Color.YELLOW);
GridBagConstraints g = new GridBagConstraints();
g.gridx = 0;
g.gridy = 0;
g.anchor = GridBagConstraints.CENTER;
rootPanel.add(contentPanel, g);
frame.setVisible(true);
1) Использование форматирования кода 2) Это редко, если вообще когда-либо, ответ. -1 –
По крайней мере, это не поможет в этом случае. – brimborium
Ну тогда вы не должны использовать BorderLayout, потому что как раз подходит для дочерних элементов. Если вы все еще хотите использовать BoderLayout на JFrame (потому что вам нужна боковая панель или что-то подобное), Вы можете просто обернуть свой JPanel (с помощью GridLayout) в другой JPanel с помощью GridBagLayout или BoxLayout или что-то подобное, а затем поместить этот другой JPanel в JFrame.
JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout());
// fill and set your innerPanel
JPanel middlePanel = new JPanel();
middlePanel.setLayout(new GridBagLayout());
middlePanel.add(innerPanel, constraintsThatPlaceItWhereYouWantIt);
JFrame yourFrame = new JFrame();
yourFrame.setLayout(new BorderLayout());
yourFrame.add(middlePanel, BorderLayout.CENTER);
'middlePanel.add (innerPanel, constraintsThatPlaceItWhereYouWantIt);' Смотрите мой ответ, почему 'constraintsThatPlaceItWhereYouWantIt' является избыточным для центрирования компонента в GBL. Он ссылается на пример кода. –
Вы правы, но я все еще всегда даю ограничения при добавлении из-за удобочитаемости. И он мог бы сделать несколько более продвинутых вещей с ним относительно размещения. – brimborium
'middlePanel.add (innerPanel/* put in center * /);';) –
- 1. Фиксированный размер для определенных объектов
- 2. Панели апплетов, один фиксированный размер и динамический JTextField
- 3. панели не отображаются в кадре
- 4. Doctrine ArrayCollection фиксированный размер
- 5. Фиксированный размер std :: vector
- 6. TkInter create_rectangle() фиксированный размер
- 7. Bootstrap фиксированный размер колонка
- 8. Получить фиксированный размер GridLayout
- 9. Фиксированный размер структуры
- 10. Фиксированный размер div
- 11. Javascript фона фиксированный размер
- 12. UICollectionView фиксированный размер содержимого
- 13. Фиксированный размер кнопок
- 14. CSS, div фиксированный размер
- 15. Сравнить фиксированный размер векторов
- 16. css, фиксированный размер
- 17. Bootstrap navbar фиксированный размер
- 18. Фиксированный размер массива
- 19. Установить фиксированный размер ArrayList
- 20. векторный векторный фиксированный размер
- 21. Фиксированный пропорциональный размер в WPF
- 22. Фиксированный размер текстуры в Three.js
- 23. Изменить размер нескольких комментариев на фиксированный размер
- 24. фиксированный размер Hashtable для кеша
- 25. Bootstrap фиксированный размер правая колонка
- 26. JTable всегда использует фиксированный размер
- 27. C (динамический) массив (фиксированный размер)
- 28. Фиксированный размер (не прокручиваемый) ListView
- 29. Фиксированный размер окна; Zurb Foundation
- 30. Фиксированный заголовок и окна размер
* «Пожалуйста, помогите мне с некоторым кодированием» * Пожалуйста, помогите себе в вопросе и любых признаках усилий. SO не является машиной для генерации кода. BTW. Не используйте форматирование текста для текста и проверяйте форматы сообщений, как вы ожидаете в предварительном просмотре. Голосование закрывается. –
Если вы предоставите некоторый код, это будет лучше. Например, я бы посмотрел в вашем коде, чтобы узнать, где и где вы называете 'setPreferredSize'. –
Если панель содержит человекообразный текст, не делайте этого! Метрики шрифтов варьируются в зависимости от платформы. – trashgod