模块
java.desktop
Package javax.swing.plaf.synth
Synth是一种可换肤的外观和感觉,其中所有的绘画都被委派。
Synth不提供默认外观。
要使用Synth,您需要指定file ,或提供
SynthStyleFactory
。
这两种配置选项都需要了解下面描述的合成体系结构,以及对Swing体系结构的理解。
除非另有说明,否则null不是合成包中定义的任何方法的合法值,如果传入将导致NullPointerException
。
合成器
Synth中的每个ComponentUI
实现与SynthStyle
相关联,每Region
,大多数Components
仅有一个Region
,因此只有一个SynthStyle
。
SynthStyle
用于访问所有与样式相关的属性:字体,颜色和其他Component
属性。
另外SynthStyle
s用于获取SynthPainter
s用于绘制背景,边框,焦点和Component
其他部分。
该ComponentUI
处取得SynthStyle
从A S 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
的每个区域的各个JComponent
。
许多Synth方法采用SynthContext
。 这用于提供有关当前Component
,包括:与当前Region
相关联的SynthStyle
,作为位掩码的Component
的状态(有效状态请参阅SynthConstants
),以及识别Component的部分的Component
。
由非JTextComponent
s呈现的所有文本被委托给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用于获取特定Component的SynthContext。