Заполнение 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.


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

3

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

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

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


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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.