2011-03-16 2 views
86

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

ответ

196

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

JPanel p =new JPanel(); 
p.setBorder(new EmptyBorder(10, 10, 10, 10)); 
+35

или вы можете иметь некоторые дополнительные отступы Arround существующей границы: 'p.setBorder (BorderFactory.createCompoundBorder (новый EmptyBorder (10, 10, 10, 10), новый EtchedBorder())); – Synox

+3

Относительно примечания: если кто-то разрабатывает настраиваемый компонент (то есть переопределяет 'paint *()'), они должны обслуживать эти границы: http://www.javaswingcomponents.com/blog/custom-swing-component-development-tip-insets-matter. – TWiStErRob

+0

Что происходит при изменении размера окна? Это решение не хорошо, не так ли? –

3

При необходимости отступы внутри JPanel обычно добавить отступы с менеджером компоновки, которую вы используете. Есть случаи, когда вы можете просто расширить границу JPanel.

+1

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

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);