Module
java.desktop
Package javax.swing.plaf.synth
合成是一种可以让所有绘画委托的外观和感觉。
Synth不提供默认外观。
为了使用Synth,您需要指定一个file ,或者提供一个
SynthStyleFactory
。
这两个配置选项都需要了解下面所述的合成器架构,以及对Swing架构的理解。
除非另有说明,否则null不属于合成器包中定义的任何方法的合法值,如果传入,则将导致一个NullPointerException
。
合成器
每个ComponentUI
Synth中赞同执行一个SynthStyle
每Region
,最Components
只有一个Region
和所以也就只有一个SynthStyle
。
SynthStyle
用于访问所有样式相关属性:字体,颜色等Component
属性。
另外SynthStyle
s用于绘制SynthPainter
s,用于绘制背景,边框,焦点等Component
部分。
ComponentUI
从SynthStyleFactory
获得SynthStyle
秒。
A 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"/>
-
接口摘要 接口 描述 SynthConstants Synth使用的常数。SynthIcon 一个图标通过一个SynthContext
。SynthUI SynthUI用于获取特定组件的SynthContext。