JavaTM 2 Platform
Standard Ed. 6

軟體套件 javax.swing.plaf.synth

Synth 是一個可更換皮膚 (skinnable) 的外觀,在其中可委託所有繪製。

請參見:
          描述

介面摘要
SynthConstants 由 Synth 使用的常數。
 

類別摘要
ColorType 可從某種樣式中獲取的一些顏色的型別安全列舉。
Region Swing 元件的獨特呈現區域。
SynthContext 一個不可變的瞬態物件,它包含有關 Region 的上下文資訊。
SynthGraphicsUtils 用於基本圖形調用的套件裝器。
SynthLookAndFeel SynthLookAndFeel 提供創建定制外觀的基礎。
SynthPainter SynthPainter 用於繪製 JComponent 的某些部分。
SynthStyle SynthStyle 是一個樣式屬性集。
SynthStyleFactory 用於獲得 SynthStyle 的處理器。
 

軟體套件 javax.swing.plaf.synth 的描述

Synth 是一個可更換皮膚 (skinnable) 的外觀,在其中可委託所有繪製。Synth 不提供預設外觀。為了使用 Synth,需要指定一個 file,或提供一個 SynthStyleFactory。兩種配置選項都要求瞭解 synth 的架構(該架構如下所示),並瞭解 Swing 的架構。

除非另行指定,否則 null 對於 synth 套件中定義的所有方法而言都不是合法值,如果傳入 null,將導致 NullPointerException

Synth

Synth 中的每個 ComponentUI 實作都將自身與每個 Region 的一個 SynthStyle 相關聯,大多數 Component 只能有一個 Region,所以也就只有一個 SynthStyleSynthStyle 用於存取所有與樣式有關的屬性:fonts、colors 和其他 Component 屬性。此外,SynthStyle 用於獲得繪製背景、邊框、焦點和 Component 的其他部分的 SynthPainterComponentUISynthStyleFactory 中獲得 SynthStyle。可直接通過 SynthLookAndFeel.setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory) 或間接通過 SynthLookAndFeel.load(java.io.InputStream, java.lang.Class) 提供 SynthStyleFactory。以下範例使用 SynthLookAndFeel.load() 方法來配置 SynthLookAndFeel,並將它設置為當前外觀:

  SynthLookAndFeel laf = new SynthLookAndFeel();
  laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
  UIManager.setLookAndFeel(laf);
      

許多 JComponent 被拆分成更小的塊,並由 Region 中型別安全的列舉來標識。例如,JTabbedPaneJTabbedPaneRegion (Region.TABBED_PANE)、內容區域 (Region.TABBED_PANE_CONTENT)、選項卡背後的區域 (Region.TABBED_PANE_TAB_AREA) 和選項卡 (Region.TABBED_PANE_TAB) 組成。每個 JComponent 的每個 Region 都將有一個 SynthStyle。這允許您定制每個 JComponent 的每個區域的個別片段。

許多 Synth 方法都採用一個 SynthContext。SynthContext 用於提供有關當前 Component 的資訊,這些資訊包括:與當前 Region 關聯的 SynthStyle、位遮罩碼形式的 Component 狀態(有關有效狀態,請參閱 SynthConstants)和一個標識正被繪製的 Component 部分的 Region

由非 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 渲染器所使用的顏色通過列表和表 Region 的方式指定。以下 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"/>


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only