Как я могу изменить размер панели в Java? - PullRequest
0 голосов
/ 09 апреля 2019

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

Я пытался northPanel.setSize(150,150);, но не получил результата

Это мой код:

JLabel lblWelcome = new JLabel("Welcome To The Login Screen", SwingConstants.CENTER);
JPanel northPanel = new JPanel(new BorderLayout());
northPanel.setBackground(Color.green);
northPanel.add(lblWelcome, BorderLayout.CENTER);

LoginScreen

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

Вы используете BorderLayout, который имеет пять позиций для размещения компонентов в макете. Пять позиций: PAGE_START, PAGE_END, LINE_START, LINE_END и CENTER. Вот схема этих позиций:

enter image description here

Для этого макета вы хотите поместить компонент, который должен занимать оставшееся пространство кадра, в положение CENTER. По этой причине северная панель, вероятно, лучше подходит в позиции PAGE_START, тогда как JPanel, в которой размещены метки входа и кнопка отправки, должна находиться в позиции CENTER. Использование этого позиционирования позволит вам изменить размер NorthPanel и позволить панели, содержащей метки входа и кнопку отправки, занять оставшееся пространство кадра.

1 голос
/ 09 апреля 2019

Я хочу сделать зеленую панель меньше

Мне кажется, что две панели одного размера, что говорит о том, что вы используете GridLayout для своей рамки.

Не используйте GridLayout, вместо этого оставьте BorderLayout по умолчанию для фрейма.

Тогда ваш код будет выглядеть примерно так:

JLabel lblWelcome = new JLabel("Welcome To The Login Screen", SwingConstants.CENTER);
JPanel northPanel = new JPanel(new BorderLayout());
northPanel.setBackground(Color.green);
northPanel.add(lblWelcome, BorderLayout.CENTER);

frame.add(northPanel, BorderLayout.PAGE_START);
frame.add(centerPanel, BorderLayout.CENTER);

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

...