Spec-Zone .ru
спецификации, руководства, описания, API

Формат файла

Формат файла синтезатора (дата) учитывает определение всех частей, необходимых, чтобы создать Ваш собственный стиль. Файл синтезатора загружается посредством SynthLookAndFeel.load (InputStream, Класс) или SynthLookAndFeel.load (URL) методы. Следующий пример использует load метод, чтобы сконфигурировать a SynthLookAndFeel и наборы это как текущий стиль:

  SynthLookAndFeel laf = new SynthLookAndFeel();
  laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
  UIManager.setLookAndFeel(laf);
      

Этот пример загружает стиль из входного потока, используя указанный class в качестве материально-сырьевой базы, чтобы разрешить пути. Также возможно загрузить стиль из произвольного URL как в следующем примере.

  SynthLookAndFeel laf = new SynthLookAndFeel();
  laf.load(new URL("file:///C:/java/synth/laf/laf.xml"));
  UIManager.setLookAndFeel(laf);
      

Метод SynthLookAndFeel.load (URL) может использоваться, например, чтобы загрузить стиль из любого следующего:

В то время как DTD для синтезатора определяется, синтаксический анализатор не проверяет. Парсинг перестанет работать, только если необходимый атрибут не определяется, или неправильного типа.

Элемент синтезатора

<!ELEMENT synth ((%beansPersistance;) | стиль | связать | шрифт | цвет |
                 imagePainter | imageIcon | defaultsProperty)*>
<!ATTLIST synth
          version              CDATA          #IMPLIED
>

Определения атрибута

версия
Версия формата файла, должен быть 1

Элемент синтезатора содержит все другие элементы, которые составляют определение SynthLookAndFeel.

Элемент стиля

<!ELEMENT style (свойство | defaultsProperty | состояние | шрифт | graphicsUtils |
                 вставки | живописец | imagePainter | непрозрачный | (%beansPersistance;) |
                 imageIcon)*>
<!ATTLIST style
          id              ID          #IMPLIED
          clone           IDREF       #IMPLIED
>

Определения атрибута

идентификатор
Уникальный идентификатор для стиля.
клон
Идентификатор ранее определенного стиля, который копируется и используется для нового стиля. Это обеспечивает conveniant механизм для того, чтобы он переопределил только часть существующего стиля.

Элемент стиля соответствует a SynthStyle, с дочерними элементами, определяющими свойства, которые применяются ко всем состояниям или утверждают элементы, которые содержат свойства, определенные для определенного состояния. Следующий пример создает непрозрачный стиль с идентификатором button, вставки 4, 4, 4, 4 и шрифт Диалогового окна 12.

<style id="button">
  <opaque value="true"/>
  <insets top="4" left="4" right="4" bottom="4"/>
  <font name="Dialog" size="12"/>
</style>
      

Следующий пример создает новый стиль с идентификатором clonedButton это - копия стиля с идентификатором button и имеет шрифт Диалогового окна, 14. Получающийся стиль будет непрозрачен, иметь вставки 4, 4, 4, 4 и шрифт Диалогового окна 14.

<style id="clonedButton" clone="button">
  <font name="Dialog" size="14"/>
</style>
      

Элемент состояния

<!ELEMENT state (цвет | шрифт | живописец | imagePainter | (%beansPersistance;) |
                 свойство |  imageIcon)*>
<!ATTLIST state
          id              ID             #IMPLIED
          clone           IDREF          #IMPLIED
          value           CDATA          #IMPLIED
          idref           IDREF          #IMPLIED
>

Определения атрибута

идентификатор
Уникальный идентификатор для состояния.
клон
Идентификатор ранее определенного состояния, которое копируется и используется для нового состояния.
значение
Идентифицирует состояние Компонента, которому должны примениться к свойства. Это - список: ВКЛЮЧЕННЫЙ, MOUSE_OVER, НАЖАТЫЙ, ОТКЛЮЧЕННЫЙ, ФОКУСИРУЕМЫЙ, ВЫБРАННЫЙ или ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ. Многократные состояния должны быть разделены 'и'. Если Вы не определяете значение, содержание применяется ко всем состояниям.
idref
Указывает, что это состояние должно быть тем же самым как ранее определенным состоянием. Это полезно для многократных стилей, которые хотят совместно использовать те же самые визуальные свойства для определенного состояния.

Элемент состояния определяет визуальные свойства, которые должны использоваться для определенного состояния компонента. Например, Вы могли определить цвет фона, когда Компонент включается, должен выглядеть по-другому чем цвет фона, когда компонент отключается. Не все Компоненты поддерживают все состояния. Например, a Panel только поддерживает состояния, ВКЛЮЧЕННЫЕ и ОТКЛЮЧЕННЫЕ.

Следующий пример создает состояние с красным фоном, который будет использоваться, когда компонент будет в выбранное и нажатое состояние:

<state value="SELECTED AND PRESSED">
  <color value="RED" type="BACKGROUND"/>
</state>
    

Состояние с большинством отдельных соответствий будет выбрано. Например, следующее определяет два состояния:

<state value="SELECTED and PRESSED" id="one">
  <color value="RED" type="BACKGROUND"/>
</state>
<state value="SELECTED" id="two">
  <color value="RED" type="BACKGROUND"/>
</state>
    

Государство one используется, когда Компонент ВЫБИРАЕТСЯ и НАЖИМАЕТСЯ, и состояние two когда Компонент ВЫБИРАЕТСЯ. Если состояние Компонента содержит, по крайней мере, ВЫБРАННЫЙ и НАЖАТЫЙ, состояние one будет выбран, иначе если состояние будет ВЫБРАНО, но не не будет содержать НАЖАТЫЙ, состояние two будет использоваться.

Элемент шрифта

<!ELEMENT font EMPTY>
<!ATTLIST font
          id              ID             #IMPLIED
          clone           IDREF          #IMPLIED
          name            CDATA          #IMPLIED
          style           CDATA          #IMPLIED
          size            CDATA          #IMPLIED
>

Определения атрибута

идентификатор
Уникальный идентификатор для Шрифта.
idref
Идентификатор ранее определенного шрифта.
имя
Имя шрифта.
стиль
Стиль шрифта. Это - список стилей, определенных Шрифтом, разделенным пробелами: ПРОСТОЙ, ПОЛУЖИРНЫЙ или КУРСИВ. Если неуказанная ПЛОСКОСТЬ используется.
размер
Размер шрифта, в пикселях

Определяет шрифт для текущего состояния, или стиль. Следует определить или idref или имя и размер.

Следующий пример создает стиль со Шрифтом Диалогового окна 12 Полужирный.

<style id="test">
  <font name="DIALOG" size="12" style="BOLD"/>
</style>
    

Следующий пример создает стиль со шрифтом Диалогового окна 12 Полужирный, который будет использоваться, если компонент будет ВКЛЮЧЕН, иначе Диалоговое окно, то 12 Курсивов будут использоваться.

<style id="test">
  <font name="DIALOG" size="12" style="ITALIC"/>
  <state value="ENABLED">
    <font name="DIALOG" size="12" style="BOLD"/>
  </state>
</style>
    

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

Цветной элемент

<!ELEMENT color EMPTY>
<!ATTLIST color
          id              ID             #IMPLIED
          idref           IDREF          #IMPLIED
          type            CDATA          #IMPLIED
          value           CDATA          #IMPLIED
>

Определения атрибута

идентификатор
Уникальный идентификатор для цвета.
idref
Идентификатор ранее определенного цвета.
ввести
Описывает, где этот цвет должен использоваться. Это обычно - одна из констант, определенных ColorType: ПЕРЕДНИЙ ПЛАН, ФОН, TEXT_FOREGROUND, TEXT_BACKGROUND или ФОКУС. Альтернативно можно определить полный путь к class и полю, например javax.swing.plaf.synth.ColorType.FOREGROUND, это полезно для подклассов синтезатора, которые определяют дополнительные цветные типы.
значение
Значение для цвета. Это принимает следующие формы.

Цвет определяет цвет и какая часть Компонента ему нужно примениться к. Следующий пример будет использовать цвет фона КРАСНЫХ, когда компонент будет включен.

<state value="ENABLED">
  <color value="RED" type="BACKGROUND"/>
</state>
    

У следующего примера будет красный фон, когда Компонент будет включен, иначе синий.

<style id="test">
  <state value="ENABLED">
    <color value="RED" type="BACKGROUND"/>
  </state>
  <state>
    <color value="#00FF00" type="BACKGROUND"/>
  </state>
</style>
    

Элемент свойства

<!ELEMENT property EMPTY>
<!ATTLIST property
          key               CDATA                                             #REQUIRED
          type              (idref|boolean|dimension|insets|integer|string)          "idref"
          value             CDATA                                             #REQUIRED
>

Определения атрибута

ключ
Имя свойства.
ввести
Указывает на тип свойства.
значение
Значение для свойства. Для булево свойств это будет быть истиной или ложью для целочисленных свойств, это будет допустимым целым числом для размерностей, это будет width и height, разделенный пространством для свойств вставок, это будет вершиной, оставленной, нижняя часть и право, разделенное пространством, и для idref свойств это будет уникальным идентификатором ранее определенного объекта.

Элементы свойства используются, чтобы добавить пар значения ключа к a SynthStyle к этому можно получить доступ посредством get метод. Многие Components используют пар значения ключа для того, чтобы сконфигурировать их визуальное появление. Отошлите к таблице свойства для списка свойств каждого Component поддерживает. Следующее создает свойства ScrollBar.allowsAbsolutePositioning, OptionPane.minimumSize, ScrollPane.viewportBorderInsets, Tree.rowHeight и foreground с ложью значений, размерности 262x90, вставки 5, 5, 5, 5, целое число 20 и экземпляр class ArrowButtonPainter.

<style id="test">
  <property key="ScrollBar.allowsAbsolutePositioning" type="boolean" value="false"/>
  <property key="OptionPane.minimumSize" type="dimension" value="262 90"/>
  <property key="ScrollPane.viewportBorderInsets" type="insets" value="5 5 5 5"/>
  <property key="Tree.rowHeight" type="integer" value="20"/>
  <object class="ArrowButtonPainter" id="ArrowButtonPainter"/>
  <property key="foreground" type="idref" value="ArrowButtonPainter"/>
</style>
    

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

<style id="test">
  <imageIcon id="defaultIcon" path="resources/myImage.png"/>
  <property key="RadioButton.icon" value="defaultIcon"/>
  <state value="MOUSE_OVER">
    <imageIcon id="mouseOverIcon" path="resources/myMouseOverImage.png"/>
    <property key="RadioButton.icon" value="mouseOverIcon"/>
  </state>
</style>
    
<!ELEMENT defaultsProperty EMPTY>
<!ATTLIST defaultsProperty
          key               CDATA                                             #REQUIRED
          type              (idref|boolean|dimension|insets|integer|string)   "idref"
          value             CDATA                                             #REQUIRED
>

Определения атрибута

ключ
Имя свойства.
ввести
Указывает на тип свойства.
значение
Значение для свойства. Для булево свойств это будет истиной или ложью для целочисленных свойств, это будет допустимым целым числом для размерностей, это будет width и height, разделенный пространством для свойств вставок, это будет вершиной, оставленной, нижняя часть и право, разделенное пространством, и для idref свойств это будет уникальным идентификатором ранее определенного объекта.

Элементы DefaultsProperty используются, чтобы определить свойства, которые будут помещены в UIDefaults таблица это SynthLookAndFeel предоставления к UIManager. Следующее присваивает Цветную красноту значению Table.focusCellForeground.

<style id="test">
  <object class="javax.swing.plaf.ColorUIResource" id="color">
    <int>255</int>
    <int>0</int>
    <int>0</int>
  </object>
  <defaultsProperty key="Table.focusCellForeground" type="idref" value="color"/>
</style>
    

Посредством этого значения можно было тогда спросить UIManager.get("Table.focusCellForeground").

graphicsUtils элемент

<!ELEMENT graphicsUtils EMPTY>
<!ATTLIST graphicsUtils
          idref           IDREF             #REQUIRED
>

Определения атрибута

idref
Identifer ранее определенного объекта SynthGraphicsUtils, который должен использоваться в качестве SynthGraphicsUtils для текущего стиля.

Элементы GraphicsUtils используются, чтобы определить SynthGraphicsUtils, который будет использовать текущий стиль. Следующий пример создает стиль с экземпляром CustomGraphicsUtils для SynthGraphicsUtils.

<style id="test">
  <object class="CustomGraphicsUtils" id="graphics"/>
  <graphicsUtils idref="graphics"/>
</style>
    

Элемент вставок

<!ELEMENT insets EMPTY>
<!ATTLIST insets
          id           ID             #IMPLIED
          idref        IDREF          #IMPLIED
          top          CDATA          #IMPLIED
          bottom       CDATA          #IMPLIED
          left         CDATA          #IMPLIED
          right        CDATA          #IMPLIED
>

Определения атрибута

идентификатор
Уникальный идентификатор для Вставок.
idref
Идентификатор ранее определенные Вставки.
вершина
Главный компонент Вставок.
нижняя часть
Нижний компонент Вставок.
левый
Оставленный компонент Вставок.
право
Правильный компонент Вставок.

Элементы вставок используются, чтобы определить Вставки для текущего стиля. Вставки будут установлены на любых Компонентах, с которыми связывается стиль. Следующий пример создает стиль со вставками 1, 2, 3, 0.

<style id="test">
  <insets top="1" bottom="2" left="3"/>
</style>
    

Связывать элемент

<!ELEMENT bind EMPTY>
<!ATTLIST bind
          style        IDREF             #REQUIRED
          type         (name|region)     #REQUIRED
          key          CDATA             #REQUIRED
>

Определения атрибута

стиль
Уникальный идентификатор ранее определенного стиля.
ввести
Одно из имени или области. Для имени типа component.getName () используется, иначе имя Области используется.
ключ
Регулярное выражение, которому применяются к имя Компонента, или имя Области, в зависимости от значения типа.

Свяжите элементы, определяют, для каких Областей стиль должен использоваться. Следующий пример применяет тест стиля к любому Компоненту, имя которого запускается с test.

<style id="test">
  <insets top="1" bottom="2" left="3"/>
</style>
<bind style="test" type="name" key="test.*"/>
    

Многочисленные стили могут примениться к области, когда каждый из соответствующих стилей объединяется в получающийся стиль, который используется. Приоритет дается стилям, определенным позже в файле. Например, следующее определяет два стиля, a и b. Разработайте примененного к любому компоненту с именем, запускающимся с теста, и разработайте b, используется для областей кнопки.

<style id="a">
  <font name="DIALOG" size="12" style="ITALIC"/>
  <insets top="1" bottom="2" left="3"/>
</style>
<bind style="a" type="name" key="test.*"/>
<style id="b">
  <font name="DIALOG" size="12" style="BOLD"/>
</style>
<bind style="b" type="region" key="button"/>
    

Поскольку кнопка с именем тестирует, это эквивалентно:

<style>
  <font name="DIALOG" size="12" style="BOLD"/>
  <insets top="1" bottom="2" left="3"/>
</style>
    

Слияние происходит для состояний стиля также.

<style id="a">
  <font name="DIALOG" size="12" style="ITALIC"/>
  <insets top="1" bottom="2" left="3"/>
  <state value="ENABLED">
    <object id="customPainter" class="CustomPainter"/>
    <painter idref="customPainter"/>
  </state>
</style>
<bind style="a" type="name" key="test.*"/>
<style id="b">
  <font name="DIALOG" size="12" style="BOLD"/>
  <state value="ENABLED">
    <font name="Lucida" size="12" style="ITALIC"/>
  </state>
</style>
<bind style="b" type="region" key="button"/>
    

Поскольку кнопка с именем тестирует, это эквивалентно:

<style>
  <font name="DIALOG" size="12" style="BOLD"/>
  <insets top="1" bottom="2" left="3"/>
  <state value="ENABLED">
    <object id="customPainter" class="CustomPainter"/>
    <painter idref="customPainter"/>
    <font name="Lucida" size="12" style="ITALIC"/>
  </state>
</style>
    

Элемент живописца

<!ELEMENT painter EMPTY>
<!ATTLIST painter
          idref                 IDREF          #IMPLIED
          method                CDATA          #IMPLIED
          direction             (north|south|east|west|top|left|bottom|right|horizontal|vertical|horizontal_split|vertical_split)          #IMPLIED
>

Определения атрибута

idref
Идентификатор ранее определенного SynthPainter.
метод
Идентифицирует метод SynthPainter, для которого это должно использоваться. Имя соответствует имени метода метода краски в SynthPainter с отброшенным префиксом краски, остаток является нечувствительным к регистру (использование latin1 складных метров случая). Например SynthPainter.paintButtonBackground идентифицируется 'buttonBackground' или 'buttonbackground'. Если это не определяется, живописец используется для всех методов, у которых нет определенного живописца для них.
направление
Идентифицирует направление, или ориентацию, этот живописец должен использоваться для. Это только полезно для методов SynthPainter, которые берут направление или ориентацию. Если это не определяется, живописец используется для всех направлений.

Живописец определяет SynthPainter для текущего стиля или состояния текущего стиля. Следующий пример связывает экземпляр class MyPainter который должен быть a SynthPainter к стилю test.

<style id="test">
  <object class="MyPainter" id="MyPainter"/>
  <painter idref="MyPainter"/>
</style>
    

Живописец, который используется для определенного метода и состояния, определяется следующим образом:

  1. Живописец, определенный для текущего состояния, метода и направления.
  2. Живописец, определенный для текущего состояния и метода.
  3. Живописец определяется для текущего состояния.
  4. Живописец, определенный для стиля, метода и направления.
  5. Живописец, определенный для стиля и метода.
  6. Живописец определяется для стиля.

Рассмотрите следующее:

<style id="test">
  <painter idref="fallbackPainter"/>
  <painter idref="styleButtonBackgroundPainter" method="buttonBackground"/>
  <state value="SELECTED">
    <painter idref="stateFallbackPainter"/>
    <painter idref="stateButtonBackgroundPainter" method="buttonBackground"/>
  </state>
</style>
      

Следующие схемы, какой живописец будет использоваться для какой метод SynthPainter:

ГосударствоМетодЖивописец
ВЫБРАННЫЙpaintButtonBackgroundstateButtonBackgroundPainter
ВЫБРАННЫЙЧто-либо кроме paintButtonBackgroundstateFallbackPainter
Почти ВЫБРАННЫЙpaintButtonBackgroundstyleButtonBackgroundPainter
Почти ВЫБРАННЫЙЧто-либо кроме paintButtonBackgroundfallbackPainter

Когда несколько идентичных живописцев объявляются, они агрегированы в единственный. Два живописца идентичны, если их направление и значения атрибутов метода равны. Рассмотрите следующее:

<style id="panelStyle">
  <imagePainter method="panelBackground" path="red.png" />
  <imagePainter method="panelBackground" path="green.png" />
  <imagePainter method="panelBackground" path="blue.png" />
</style>
	  

Эти три живописца идентичны, поскольку они используют тот же самый метод и то же самое направление (все направления по умолчанию). Синтезатор агрегировал этих живописцев, чтобы создать единственный, который нарисует его дочерних живописцев в порядке объявления. Следовательно, Синтезатор сначала нарисует красное изображение, тогда зеленый и наконец синий. Каждый дочерний живописец может быть замечен как уровень совокупного живописца.

Агрегация живописца, или мультииерархическое представление, очень полезна для элементов повторного использования. Предположите, что Вы хотите использовать эффект выделения на кнопки и на выбранные пункты меню. С агрегацией живописца Вы только должны создать отдельного живописца выделения вместо того, чтобы иметь кнопки, и живописцы пунктов меню обрабатывают ее.

imagePainter элемент

<!ELEMENT imagePainter EMPTY>
<!ATTLIST imagePainter
          id                    ID             #IMPLIED
          method                CDATA          #IMPLIED
          direction             (north|south|east|west|top|left|bottom|right|horizontal|vertical|horizontal_split|vertical_split)          #IMPLIED
          path                  CDATA          #REQUIRED
          sourceInsets          CDATA          #IMPLIED
          destinationInsets     CDATA          #IMPLIED
          paintCenter           (true|false)   "true"
          stretch               (true|false)   "true"
          center                (true|false)   "false"
>

Определения атрибута

идентификатор
Уникальный идентификатор для imagePainter.
метод
Идентифицирует метод SynthPainter, для которого это должно использоваться. Имя соответствует имени метода метода краски в SynthPainter с отброшенным префиксом краски, остаток является нечувствительным к регистру (использование latin1 складных метров случая). Например SynthPainter.paintButtonBackground идентифицируется 'buttonBackground' или 'buttonbackground'. Если это не определяется, живописец используется для всех методов, у которых нет определенного живописца для них.
направление
Идентифицирует направление, или ориентацию, это изображение должно использоваться для. Это только полезно для методов SynthPainter, которые берут направление или ориентацию. Если это не определяется, изображение используется для всех направлений.
путь
Путь к изображению. Путь к изображению. Если SynthLookAndFeel.load передадут Класс, то это будет использовать метод Class getResource (с с Классом suplied к методу загрузки). Если загрузку передадут URL, то это будет использовать конструктора URL URL (контекст, путь), чтобы разрешить путь.
sourceInsets
Вставки на исходном изображении. Это - вершина, оставленная, нижняя часть, прямо с каждым компонентом, разделенным пространством.
destinationInsets
Вставки целевого изображения. Это - вершина, оставленная, нижняя часть, прямо с каждым компонентом, разделенным пространством. Если не определенный sourceInsets используются.
paintCenter
Должен ли центр изображения быть привлечен.
фрагмент
Должны ли север, юг, восточные и западные компоненты получающегося изображения масштабироваться или размещены рядом.
центр
Центрируется ли изображение.

Элемент ImagePainter определяет живописца для текущего стиля, или утвердите, что это представит использование указанного изображения. ImagePainter предлагает два отличных режима рендеринга. Первый режим используется, чтобы центрировать изображение в обеспеченном пространстве. Это обычно используется в рендеринге художественных оформлений сверху виджета, например, чтобы определить, что стрелка для кнопки прокрутки использует центральный режим. Следующий пример иллюстрирует это:

<style id="test">
  <imagePainter path="resources/myImage.png" center="true"/>
</style>
    

Второй режим используется в масштабировании изображения, чтобы поместиться в обеспеченное пространство. В этом режиме sourceInsets используется, чтобы определить границу вокруг изображения, где север, юг, восточные и западные края границы или расширяются или размещаются рядом (атрибут фрагмента), четыре угла границы, оттянутой на месте, и центр расширяется. В этом режиме следует определить sourceInsets. Следующий пример иллюстрирует ImagePainter, который использует изображение MyImage.png и вставки 2 полностью вокруг:

<style id="test">
  <imagePainter path="resources/myImage.png"
                sourceInsets="2 2 2 2"/>
</style>
    

Сошлитесь на описание элемента живописца для деталей относительно приоритета в выборе живописца и понять, как обрабатываются идентичные живописцы.

imageIcon элемент

<!ELEMENT imageIcon EMPTY>
<!ATTLIST imageIcon
          id                    ID             #REQUIRED
          path                  CDATA          #REQUIRED
>

Определения атрибута

идентификатор
Уникальный идентификатор для imageIcon.
путь
Путь к изображению. Это использует метод Class getResource, чтобы разрешить путь с Классом, предоставленным SynthLookAndFeel.load.

ImageIcon используется, чтобы присвоить реализацию Значка, которая обертывает Изображение к уникальному идентификатору. Это обычно используется для свойств, которые берут Значок. Следующий пример связывает ImageIcon со свойством RadioButton.icon.

<style id="test">
  <imageIcon id="icon" path="resources/myImage.png"/>
  <property key="RadioButton.icon" value="icon"/>
</style>
    

Непрозрачный элемент

<!ELEMENT opaque EMPTY>
<!ATTLIST opaque
          value              (true|false)   "true"
>

Определения атрибута

идентификатор
Должен ли стиль быть непрозрачным, если неуказанный стиль непрозрачен.

Непрозрачный элемент указывает, должны ли какие-либо Компоненты, с которыми связывается стиль, быть сделаны непрозрачными. Живописца попросят нарисовать независимо от непрозрачности связанного Компонента. Следующий пример создает стиль, который не непрозрачен.

<style id="test">
  <opaque value="FALSE">
  <painter idref="painter"/>
</style>
    

beansPersistance объект

Бобовое постоянство может использоваться, чтобы встроить любой Объект. Это обычно используется для того, чтобы встроить Ваших собственных Живописцев, но может использоваться для других объектов arbritrary также. Обратитесь к http://java.sun.com/products/jfc/tsc/articles/persistence3/ для деталей о бобовом постоянстве.

Поддержка Стиля

В создании файла Синтезатора это - хорошая практика, чтобы создать отступающий стиль, который используется всеми компонентами. Это удостоверится, что у любых компонентов, которые не соответствуют определенный стиль, будут шрифт значения по умолчанию, передний план, фон и непрозрачность. Следующий пример иллюстрирует это:

<synth>
  <style id="backingStyle">
    <opaque value="true"/>
    <font name="Dialog" size="12"/>
    <state>
      <color value="BLACK" type="BACKGROUND"/>
      <color value="WHITE" type="FOREGROUND"/>
    </state>
  </style>
  <bind style="backingStyle" type="region" key=".*"/>
</synth>