Как я добавляю поле вне границы компонента в Swing?

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

7
задан Jonas 21 May 2010 в 15:12
поделиться

2 ответа

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

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

3
ответ дан 6 December 2019 в 09:18
поделиться

Другой способ получить желаемое - это:

  1. получить текущую Границу вашего компонент
  2. if null , установите EmptyBorder для вашего компонент
  3. , если не нуль , создать новый CompoundBorder EmptyBorder и текущая Граница компонент) и установите его для компонент

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

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 , который вы используете. Но думаю, попробовать стоит.

17
ответ дан 6 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: