Пакет javax.swing.plaf.synth
SynthStyleFactory. Оба варианта конфигурации требуют понимания архитектуры Synth, описанной ниже, а также архитектуры Swing. Если не указано иное, null не является допустимым значением для каких-либо методов, определённых в пакете synth, и, если он передан, приведёт к NullPointerException.
Synth
КаждыйComponentUI в Synth ассоциируется с одним SynthStyle на Region, большинство Components имеют только один Region и, следовательно, только один SynthStyle. SynthStyle используется для доступа ко всем свойствам стиля: шрифты, цвета и другие Component свойства. Кроме того, SynthStyle используются для получения SynthPainter для отрисовки фона, границы, фокуса и других частей Component. ComponentUI получают SynthStyle из SynthStyleFactory. SynthStyleFactory можно предоставить напрямую с помощью SynthLookAndFeel.setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory) или косвенно с помощью SynthLookAndFeel.load(java.io.InputStream, java.lang.Class<?>). Следующий пример использует метод SynthLookAndFeel.load() для конфигурации SynthLookAndFeel и устанавливает его в качестве текущего вида:
SynthLookAndFeel laf = new SynthLookAndFeel();
laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
UIManager.setLookAndFeel(laf);
Многие JComponent разбиты на меньшие части и идентифицируются с помощью безопасного перечисления типов в Region. Например, JTabbedPane состоит из Region для JTabbedPane(Region.TABBED_PANE), области содержимого (Region.TABBED_PANE_CONTENT), области за вкладками (Region.TABBED_PANE_TAB_AREA) и самих вкладок (Region.TABBED_PANE_TAB). Каждый Region каждого JComponent будет иметь SynthStyle. Это позволяет настраивать отдельные части каждой области каждого JComponent.
Многие методы Synth принимают SynthContext. Он используется для предоставления информации о текущем Component и включает в себя: SynthStyle, связанный с текущей Region, состояние Component в виде битовой маски (обратитесь к SynthConstants для допустимых состояний) и Region, идентифицирующий часть Component, которая отрисовывается.
Вся отрисовка текста не-JTextComponent делегируется SynthGraphicsUtils, который получен с помощью метода SynthStyle SynthStyle.getGraphicsUtils(javax.swing.plaf.synth.SynthContext). Вы можете настроить отрисовку текста, предоставив свой собственный SynthGraphicsUtils.
Примечания по отдельным компонентам
JTree
Synth предоставляет область для ячеек дерева:Region.TREE_CELL. Чтобы указать цвета рендерера, необходимо предоставить стиль для области TREE_CELL. Следующее иллюстрирует это:
<style id="treeCellStyle">
<opaque value="TRUE"/>
<state>
<color value="WHITE" type="TEXT_FOREGROUND"/>
<color value="RED" type="TEXT_BACKGROUND"/>
</state>
<state value="SELECTED">
<color value="RED" type="TEXT_FOREGROUND"/>
<color value="WHITE" type="BACKGROUND"/>
</state>
</style>
<bind style="treeCellStyle" type="region" key="TreeCell"/>
Это задает сочетание красного на белом при выделении и белого на красном при невыделении. Чтобы увидеть фон, необходимо указать, что метки не непрозрачны. Следующий фрагмент XML делает это:
<style id="labelStyle">
<opaque value="FALSE"/>
</style>
<bind style="labelStyle" type="region" key="Label"/>
JList и JTable
Цвета, которые используют рендереры для JList и JTable, задаются с помощью областей списка и таблицы. Следующий фрагмент XML иллюстрирует, как указать красный на белом при выделении и белый на красном при невыделении:
<style id="style">
<opaque value="TRUE"/>
<state>
<color value="WHITE" type="TEXT_FOREGROUND"/>
<color value="RED" type="TEXT_BACKGROUND"/>
<color value="RED" type="BACKGROUND"/>
</state>
<state value="SELECTED">
<color value="RED" type="TEXT_FOREGROUND"/>
<color value="WHITE" type="TEXT_BACKGROUND"/>
</state>
</style>
<bind style="style" type="region" key="Table"/>
<bind style="style" type="region" key="List"/>
| Класс | Описание |
|---|---|
| ColorType | Перечисление типов цветов, которые можно получить из стиля. |
| Region | Отдельная область отрисовки Swing-компонента. |
| SynthButtonUI | Обеспечивает делегат UI для JButton в Synth L&F. |
| SynthCheckBoxMenuItemUI | Обеспечивает делегат UI для JCheckBoxMenuItem в Synth L&F. |
| SynthCheckBoxUI | Обеспечивает делегат UI для JCheckBox в Synth L&F. |
| SynthColorChooserUI | Обеспечивает делегат UI для JColorChooser в Synth L&F. |
| SynthComboBoxUI | Обеспечивает делегат UI для JComboBox в Synth L&F. |
| SynthConstants | Константы, используемые Synth. |
| SynthContext | Неизменяемый временный объект, содержащий контекстную информацию о Region. |
| SynthDesktopIconUI | Обеспечивает делегат UI для минимизированной внутренней рамки на рабочем столе. |
| SynthDesktopPaneUI | Обеспечивает делегат UI для JDesktopPane в Synth L&F. |
| SynthEditorPaneUI | Обеспечивает делегат UI для JEditorPane в Synth L&F. |
| SynthFormattedTextFieldUI | Обеспечивает делегат UI для JFormattedTextField в Synth L&F. |
| SynthGraphicsUtils | Обертка для примитивных графических вызовов. |
| SynthIcon | Иконка, которой передаётся SynthContext. |
| SynthInternalFrameUI | Обеспечивает делегат UI для JInternalFrame в Synth L&F. |
| SynthLabelUI | Обеспечивает делегат UI для JLabel в Synth L&F. |
| SynthListUI | Обеспечивает делегат UI для JList в Synth L&F. |
| SynthLookAndFeel | SynthLookAndFeel предоставляет основу для создания настраиваемого внешнего вида. |
| SynthMenuBarUI | Обеспечивает делегат UI для JMenuBar в Synth L&F. |
| SynthMenuItemUI | Обеспечивает делегат UI для JMenuItem в Synth L&F. |
| SynthMenuUI | Обеспечивает делегат UI для JMenu в Synth L&F. |
| SynthOptionPaneUI | Обеспечивает делегат UI для JOptionPane в Synth L&F. |
| SynthPainter | SynthPainter используется для отрисовки частей JComponent. |
| SynthPanelUI | Обеспечивает делегат UI для JPanel в Synth L&F. |
| SynthPasswordFieldUI | Обеспечивает делегат UI для JPasswordField в Synth L&F. |
| SynthPopupMenuUI | Обеспечивает делегат UI для JPopupMenu в Synth L&F. |
| SynthProgressBarUI | Обеспечивает делегат UI для JProgressBar в Synth L&F. |
| SynthRadioButtonMenuItemUI | Обеспечивает делегат UI для JRadioButtonMenuItem в Synth L&F. |
| SynthRadioButtonUI | Обеспечивает делегат UI для JRadioButton в Synth L&F. |
| SynthRootPaneUI | Обеспечивает делегат UI для JRootPane в Synth L&F. |
| SynthScrollBarUI | Обеспечивает делегат UI для JScrollBar в Synth L&F. |
| SynthScrollPaneUI | Обеспечивает делегат UI для JScrollPane в Synth L&F. |
| SynthSeparatorUI | Обеспечивает делегат UI для JSeparator в Synth L&F. |
| SynthSliderUI | Обеспечивает делегат UI для JSlider в Synth L&F. |
| SynthSpinnerUI | Обеспечивает делегат UI для JSpinner в Synth L&F. |
| SynthSplitPaneUI | Обеспечивает делегат UI для JSplitPane в Synth L&F. |
| SynthStyle | SynthStyle представляет собой набор свойств стиля. |
| SynthStyleFactory | Фабрика, используемая для получения SynthStyle. |
| SynthTabbedPaneUI | Обеспечивает делегат UI для JTabbedPane в Synth L&F. |
| SynthTableHeaderUI | Обеспечивает делегат UI для JTableHeader в Synth L&F. |
| SynthTableUI | Обеспечивает делегат UI для JTable в Synth L&F. |
| SynthTextAreaUI | Обеспечивает вид и поведение простого текстового редактора в Synth внешнем виде. |
| SynthTextFieldUI | Обеспечивает делегат UI для JTextField в Synth L&F. |
| SynthTextPaneUI | Обеспечивает вид и поведение стилизованного текстового редактора в Synth внешнем виде. |
| SynthToggleButtonUI | Предоставляет делегата Synth L&F UI для JToggleButton. |
| SynthToolBarUI | Предоставляет делегата Synth L&F UI для JToolBar. |
| SynthToolTipUI | Предоставляет делегата Synth L&F UI для JToolTip. |
| SynthTreeUI | Предоставляет делегата Synth L&F UI для JTree. |
| SynthUI | SynthUI используется для извлечения SynthContext для конкретного компонента. |
| SynthViewportUI | Предоставляет делегата Synth L&F UI для JViewport. |
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/plaf/synth/package-summary.html