Вставки для пользовательского интерфейса Synth - PullRequest
4 голосов
/ 07 июля 2010

Я реализую пользовательский стиль Look & Feel с использованием Synth для своего приложения, в основном предоставляя собственные версии SynthStyle, SynthPainter и SynthStyleFactory.

Я не использую любой XML, т. Е. Все делается через API Java. В целом это работает просто отлично.

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

  • Переопределить getInsets для SynthStyle, чтобы возвращать определенные вставки для каждого региона
  • Применение границы к компонентам с помощью SynthStyle.installDefaults
  • Установить все вставки в (0,0,0,0) и компенсировать методами окраски
  • Создание новых делегатов ComponentUI

Какой подход лучше и почему?

1 Ответ

1 голос
/ 22 февраля 2011

Вы уже пришли к решению по этому вопросу?Вот мое мнение о вещах ...

Переопределение getInsets() выглядит хорошим решением, если у вас есть простой стиль с небольшим количеством контекстов.Это должно помочь сохранить согласованность вставок во всем вашем графическом интерфейсе с единственной необходимой точкой изменения.

Применение пустой границы к компонентам кажется немного хакерским для этой цели.Если вам нужно применить пользовательскую границу к компоненту, вы можете случайно удалить пустую границу, если не переопределите методы setBorder() для использования составной границы.

Установка всех вставок в 0 не требуется, поскольку они начинаются с0 уже ... я бы очень испугался при мысли переписать методы рисования!Обычно это делается для добавления завершающих штрихов к компонентам, а не для переопределения их полных границ.

Я не совсем уверен, как поможет создание нового ComponentUI, поскольку это главным образом связано с изменением размеров и окраской (как описано выше).

Сначала я опробую вариант 1, так как он будет иметь глобальное влияние на ваше приложение, а затем начнет работать над тем, какие исключения и контексты вы хотите в него вставить.

...