Skip navigation links
Java™ Platform
Standard Ed. 8

Package javax.swing.plaf.synth

合成是一种可以让所有绘画委托的外观和感觉。

See: 描述

Package javax.swing.plaf.synth Description

合成是一种可以让所有绘画委托的外观和感觉。 Synth不提供默认外观。 为了使用Synth,你需要指定一个file ,或者提供一个SynthStyleFactory 这两个配置选项都需要了解下面所述的合成器架构,以及对Swing架构的理解。

除非另有说明,否则null不属于合成器中定义的任何方法的合法值,如果传入,则将导致NullPointerException

合成

每个ComponentUI Synth中赞同执行一个SynthStyleRegion ,最Components只有一个Region和所以也就只有一个SynthStyle SynthStyle用于访问所有样式相关属性:字体,颜色等Component属性。 此外SynthStyle s的用于获得SynthPainter S代表画的背景,边框,聚焦和其它部分Component ComponentUISynthStyleFactory获得SynthStyle s。 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由一个的RegionJTabbedPaneRegion.TABBED_PANE ),内容区域( Region.TABBED_PANE_CONTENT ),突片(后面的区域Region.TABBED_PANE_TAB_AREA ),和所述突出部( Region.TABBED_PANE_TAB )。 每个Region每个JComponent将有一个SynthStyle 这允许您自定义每个JComponent的每个区域的各个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"/> 
Skip navigation links
Java™ Platform
Standard Ed. 8