Пакет 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 | Обеспечивает делегата пользовательского интерфейса Synth L&F для JButton. |
| SynthCheckBoxMenuItemUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JCheckBoxMenuItem. |
| SynthCheckBoxUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JCheckBox. |
| SynthColorChooserUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JColorChooser. |
| SynthComboBoxUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JComboBox. |
| SynthConstants | Константы, используемые Synth. |
| SynthContext | Неизменяемый временный объект, содержащий контекстную информацию о Region. |
| SynthDesktopIconUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для минимизированной внутренней рамки на рабочем столе. |
| SynthDesktopPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JDesktopPane. |
| SynthEditorPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JEditorPane. |
| SynthFormattedTextFieldUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JFormattedTextField. |
| SynthGraphicsUtils | Обёртка для примитивных графических вызовов. |
| SynthIcon | Иконка, которая получает SynthContext. |
| SynthInternalFrameUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JInternalFrame. |
| SynthLabelUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JLabel. |
| SynthListUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JList. |
| SynthLookAndFeel | SynthLookAndFeel предоставляет основу для создания настраиваемого внешнего вида. |
| SynthMenuBarUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JMenuBar. |
| SynthMenuItemUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JMenuItem. |
| SynthMenuUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JMenu. |
| SynthOptionPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JOptionPane. |
| SynthPainter | SynthPainter используется для отрисовки частей JComponent. |
| SynthPanelUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JPanel. |
| SynthPasswordFieldUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JPasswordField. |
| SynthPopupMenuUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JPopupMenu. |
| SynthProgressBarUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JProgressBar. |
| SynthRadioButtonMenuItemUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JRadioButtonMenuItem. |
| SynthRadioButtonUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JRadioButton. |
| SynthRootPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JRootPane. |
| SynthScrollBarUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JScrollBar. |
| SynthScrollPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JScrollPane. |
| SynthSeparatorUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JSeparator. |
| SynthSliderUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JSlider. |
| SynthSpinnerUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JSpinner. |
| SynthSplitPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JSplitPane. |
| SynthStyle | SynthStyle — это набор свойств стиля. |
| SynthStyleFactory | Фабрика, используемая для получения SynthStyle. |
| SynthTabbedPaneUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JTabbedPane. |
| SynthTableHeaderUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JTableHeader. |
| SynthTableUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JTable. |
| SynthTextAreaUI | Обеспечивает внешний вид простого текстового редактора в внешнем виде Synth. |
| SynthTextFieldUI | Обеспечивает делегата пользовательского интерфейса Synth L&F для JTextField. |
| SynthTextPaneUI | Обеспечивает внешний вид стилизованного текстового редактора в внешнем виде Synth. |
| SynthToggleButtonUI | Обеспечивает делегат пользовательского интерфейса Synth L&F для JToggleButton. |
| SynthToolBarUI | Обеспечивает делегат пользовательского интерфейса Synth L&F для JToolBar. |
| SynthToolTipUI | Обеспечивает делегат пользовательского интерфейса Synth L&F для JToolTip. |
| SynthTreeUI | Обеспечивает делегат пользовательского интерфейса Synth L&F для JTree. |
| SynthUI | SynthUI используется для получения SynthContext для определенного компонента. |
| SynthViewportUI | Обеспечивает делегат пользовательского интерфейса Synth L&F для JViewport. |
© 1993, 2021, 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/17/docs/api/java.desktop/javax/swing/plaf/synth/package-summary.html