Заполнение JPanel в Java

107

У меня есть вопрос о форматировании моего приложения Java Swing. Это должно быть довольно просто, но мне трудно найти какую-либо помощь (Кажется, каждая тема касается удаления любых отступов по умолчанию в JPanel). Текст в различных панелях JPanel обнимает края и верх, касаясь цветных границ: как добавить отступ? Спасибо.

Коннор
источник

Ответы:

234

Установите EmptyBorderвокруг вашего JPanel.
Пример:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));
Жюльен Вермиллар
источник
45
или вы можете p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
добавить
Что происходит при изменении размера окна? Это решение нехорошо, не так ли?
Эндрю С.
@Synox Legend действительно! Обратите внимание, что вы можете указать EmptyBorder в качестве последнего параметра для внутреннего заполнения
Hunter S
3

Когда вам нужно заполнение внутри, JPanelобычно вы добавляете отступ с помощью менеджера компоновки, который вы используете. Бывают случаи, когда можно просто расширить границу JPanel.

jzd
источник
1
Добавление отступов в диспетчер компоновки (в моем случае GridLayout) добавляет отступы между соседними панелями, но не внутри отдельной панели. Но подойдет бордюр, спасибо за помощь.
Коннор
3

Я предполагаю, что ваша JPanel содержит JTextField, ради демонстрации.

Эти компоненты предоставляют JTextComponent#setMargin()метод, который вам кажется именно тем, что вам нужно.

Если вы ищете вокруг текста пустую рамку любого размера, то используйте EmptyBorder

Riduidel
источник
0
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);
Деметрио
источник