Как я могу добавить зазор по краю кнопки? - PullRequest
6 голосов
/ 29 июля 2011

Я хочу оставить границу по умолчанию для моих JButton с, но также оставить пустое пространство вокруг них. Я использую вертикаль BoxLayout.

  • Изначально я ничего не сказал о границах и получил один пиксель LineBorder s, который я хочу, но все кнопки прижаты друг к другу.

  • Затем я попытался button[i].setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)). Вместо добавления пустого пространства вокруг кнопки, области кнопок расширялись. Также были удалены LineBorder.

  • Затем я попытался: button[i].setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5), button.getBorder()))

Это вернуло мне LineBorder, но вместо того, чтобы добавить пустое пространство вне строки, оно просто расширило области кнопок за линией!

Я понимаю, что могу добавить пустые поля для разметки моих кнопок, но я хочу, чтобы также было место по бокам от них, поэтому я хочу добавить EmptyBorder. Я новичок в Swing, так что, возможно, есть совершенно лучший способ сделать это, о котором я не знаю :)

Я использую Jython, но API должен быть таким же, как и в Java.

Ответы [ 2 ]

5 голосов
/ 29 июля 2011

Концептуально, «пустые границы», которые вы хотите добавить, на самом деле не являются частью кнопки (например, они не должны быть кликабельными).

Это на самом деле вопрос компоновки, поэтому вам, вероятно, следует проверить документацию менеджера компоновки, который вы используете. Например:

  • Некоторые менеджеры компоновки, такие как FlowLayout , BorderLayout или GridLayout , имеют свойства hgap и vgap для указания горизонтальных и вертикальных разрывов между компонентами.
  • С помощью GridBagLayout вы можете установить insets объекта GridBagConstraints .
  • С помощью BoxLayout можно добавить «жесткие области», «клей» и «наполнители» (см. Класс Box ).

и т. Д.

3 голосов
/ 29 июля 2011

Я думаю, что проще добавить кнопку на панель и установить пустую рамку для панели.

...