Как добавить поле за пределами компонента в Swing? - PullRequest
6 голосов
/ 21 мая 2010

Я использую несколько компонентов, у которых нарисована граница. Есть ли простой способ добавить поле для компонента, чтобы границы не были нарисованы так близко друг к другу?

Ответы [ 2 ]

16 голосов
/ 22 мая 2010

Другой способ получить то, что вы хотите, это:

  1. получите текущий Border вашего Компонент
  2. если null, установите EmptyBorder для вашего Компонент
  3. если нет null, создайте новый CompoundBorderEmptyBorder и текущий Border из компонент) и установите его для Компонент

В коде это должно выглядеть так (извините, я не проверял это):

Border current = component.getBorder();
Border empty = new EmptyBorder(top, left, bottom right);
if (current == null)
{
    component.setBorder(empty);
}
else
{
    component.setBorder(new CompoundBorder(empty, current));
}

Где:

  • компонент является компонентом Swing для который вы хотите добавить наценку
  • сверху, слева, снизу, справа количество пикселей, которое вы хотите добавить вокруг ваш компонент

Обратите внимание, что этот метод может оказывать влияние (размер, выравнивание) на макет формы в зависимости от используемого LayoutManager. Но я думаю, что стоит попробовать.

3 голосов
/ 21 мая 2010

Обычно это делается с помощью вашего менеджера макета. Например, если вы используете GridBagLayout, вы должны установить insets для объекта GridBagConstraint на нужное значение.

Другой вариант - использовать объект Box и добавить горизонтальную или вертикальную структуру. См. javadoc для Box.createVerticalStrut( int width ) и аналогичных createHorizontalStrut.

...