Поля Synthetica JButton

Итак, у меня есть решение для календаря для моих работодателей, в котором я использую собственный внешний вид (Synthetica), и каждая ячейка в таблице содержит JPanel со списком кнопок и PAGE_AXIS BoxLayout. Я пытаюсь уменьшить промежутки между каждой кнопкой, чтобы они упирались друг в друга, и я пытался установить границы равными нулю, за исключением того, что это разрушает внешний вид кнопки. Я использовал следующий (как рекомендовано Oracle для просмотра фактического размера компонентов) код;

setBorder(BorderFactory.createCompoundBorder(
    BorderFactory.createLineBorder(Color.red), 
    getBorder())); 

И это то, что я получаю;

введите здесь описание изображения

Установка поля не работает с любой версией границы, которую используют кнопки. Итак, есть ли способ найти текущую границу, которую он использует? Так что я могу установить вставки этой границы вручную или что-то в этом роде. В принципе, мне нужно, чтобы кнопки упирались друг в друга. Любые идеи?

Уточнение: я хочу, чтобы сами кнопки оставались того же размера, но я хочу, чтобы белое пространство вокруг них (выделено внутри красных рамок) исчезло,


person Rudi Kershaw    schedule 11.11.2013    source источник
comment
Я думаю, что проблема не в кнопке, а в самом Box Layout. Вы пробовали другой LayoutManager?   -  person Gabriel Câmara    schedule 11.11.2013
comment
@GabrielCâmara - красные линии вокруг кнопок отмечают самую дальнюю точку от компонентов JButton, поэтому компоненты на самом деле находятся рядом друг с другом, но имеют дополнительное пространство снаружи внутри компонента. Так что дело не в компоновке. По крайней мере, я полагаю, что нет.   -  person Rudi Kershaw    schedule 12.11.2013


Ответы (2)


Следует рассмотреть несколько возможностей:

  • Управляйте связанными свойствами кнопки: setBorderPainted(false), и др., как предлагается здесь.

  • Посмотрите, доступен ли подходящий sizeVariant, как показано здесь.

  • Используйте пользовательский делегат пользовательского интерфейса на основе BasicButtonUI, как показано здесь и здесь.

person trashgod    schedule 11.11.2013
comment
Эй, спасибо за ваш ответ. Я попробовал два верхних предложения и ничего не получил (пространство между ними все еще не уменьшено). Сейчас смотрю на последний пункт, но у меня небольшие проблемы с пониманием. - person Rudi Kershaw; 12.11.2013
comment
При любом подходе вы можете переопределить getPreferredSize(), но остерегайтесь это. - person trashgod; 12.11.2013
comment
Извините за задержку. Понял, что никогда не принимал ответа на этот вопрос. Я использовал пользовательский интерфейс, как в вашем последнем предложении. - person Rudi Kershaw; 04.02.2014

Я пытался заставить Synthetica L&F взглянуть, но кажется, что вам нужно создать учетную запись, чего я не хотел делать. В любом случае, беглый просмотр веб-сайта, и я нашел страницу, которая показывает, как вы можете увидеть и настроить некоторые значения, установленные в L&F. Может стоит заглянуть туда.

http://www.jyloo.com/synthetica/customize/

person patois50    schedule 11.11.2013