Module java.desktop

Class BasicLookAndFeel

java.lang.Object
javax.swing.LookAndFeel
javax.swing.plaf.basic.BasicLookAndFeel
所有已实现的接口:
Serializable
直接已知的子类:
MetalLookAndFeel, SynthLookAndFeel

public abstract class BasicLookAndFeel extends LookAndFeel implements Serializable
用于创建Swing外观的基类。

BasicLookAndFeel 提供的每个 ComponentUI 都从默认表中获取其行为。除非另有说明,否则此包中的每个 ComponentUI 实现都记录了它们使用的默认值集。除非另有说明,默认值在调用 installUI 时安装,并遵循 LookAndFeel 中关于安装默认值的建议。

警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到 java.beans 包中。请参阅 XMLEncoder

  • Constructor Details

    • BasicLookAndFeel

      protected BasicLookAndFeel()
      子类调用的构造函数。
  • Method Details

    • getDefaults

      public UIDefaults getDefaults()
      返回外观的默认值。返回的 UIDefaults 是通过按顺序调用 initClassDefaultsinitSystemColorDefaultsinitComponentDefaults 来填充的。

      虽然此方法是公共的,但应仅在将外观设置为当前外观并在调用 initialize 后由 UIManager 调用。

      覆盖:
      getDefaults 在类 LookAndFeel
      返回:
      外观的默认值
      参见:
    • initClassDefaults

      protected void initClassDefaults(UIDefaults table)
      使用从 uiClassID 到ui类的完全限定名称的映射填充 table。特定 uiClassID 的值为 "javax.swing.plaf.basic.Basic + uiClassID"。例如,TreeUI 的值为 "javax.swing.plaf.basic.BasicTreeUI"
      参数:
      table - 要添加条目的 UIDefaults 实例
      抛出:
      NullPointerException - 如果 tablenull
      参见:
    • initSystemColorDefaults

      protected void initSystemColorDefaults(UIDefaults table)
      使用系统颜色填充 table。这将创建一个 name-color 对的数组并调用 loadSystemColors

      名称是一个 String,对应于 SystemColor 类中静态 SystemColor 字段的名称。为每个这样的 SystemColor 字段创建一个 name-color 对。

      color 对应于由 Color.decode 理解的十六进制 String。例如,一个 name-color 对是 "desktop"-"#005C5C"。这对应于 SystemColor 字段 desktop,颜色值为 new Color(0x005C5C)

      以下显示了两个 name-color 对:

         String[] nameColorPairs = new String[] {
                "desktop", "#005C5C",
          "activeCaption", "#000080" };
         loadSystemColors(table, nameColorPairs, isNativeLookAndFeel());
       
      如前所述,这将使用提供的 tablename-color 对数组调用 loadSystemColorsloadSystemColors 的最后一个参数指示是否应使用 SystemColor 中的字段值。此方法将 isNativeLookAndFeel() 的值作为 loadSystemColors 的最后一个参数传递。
      参数:
      table - 要添加值的 UIDefaults 对象
      抛出:
      NullPointerException - 如果 tablenull
      参见:
    • loadSystemColors

      protected void loadSystemColors(UIDefaults table, String[] systemColors, boolean useNative)
      使用 systemColors 中的 name-color 对填充 table。有关 systemColors 格式的详细信息,请参阅 initSystemColorDefaults(UIDefaults) systemColors 中的每个 name-color 对在 table 中添加一个条目。

      name-color 对的 name

      name-color 对的 color。条目的值通过以下两种方式之一计算。无论哪种方法,值始终为 ColorUIResource

      useNativefalse,则通过使用 Color.decodeString 转换为 Color 来创建 color。如果 decode 无法将 String 转换为 Color(抛出 NumberFormatException),则使用黑色的 ColorUIResource

      useNativetrue,则 color 是与 name-color 对的 name 相同的 SystemColor 中的字段值。如果字段无效,则使用黑色的 ColorUIResource

      参数:
      table - 要添加值的 UIDefaults 对象
      systemColors - 如 initSystemColorDefaults(UIDefaults) 中所述的 name-color 对数组
      useNative - 颜色是从 SystemColor 还是 Color.decode 获取
      抛出:
      NullPointerException - 如果 systemColorsnull;或 systemColors 不为空,且 tablenull;或 name-color 对的名称之一为 null;或 useNativefalsename-color 对的 color 之一为 null
      ArrayIndexOutOfBoundsException - 如果 useNativefalsesystemColors.length 为奇数
      参见:
    • initComponentDefaults

      protected void initComponentDefaults(UIDefaults table)
      使用基本外观的默认值填充 table
      参数:
      table - 要添加值的 UIDefaults
      抛出:
      NullPointerException - 如果 tablenull
    • getAudioActionMap

      protected ActionMap getAudioActionMap()
      返回一个包含此外观的音频操作的ActionMap

      返回的ActionMap包含体现渲染听觉提示能力的Actions。这些听觉提示映射到用户和系统活动,对于最终用户了解这些活动可能是有用的(例如对话框出现)。

      在适当的时候,ComponentUI负责从ActionMap中获取一个Action并将其传递给playSound

      此方法首先使用键"AuditoryCues.actionMap"从默认值中查找ActionMap

      如果值为non-null,则返回该值。如果默认"AuditoryCues.actionMap"的值为null且默认"AuditoryCues.cueList"的值为non-null,则创建并填充一个ActionMapUIResource。填充是通过迭代"AuditoryCues.cueList"数组的每个元素,并调用createAudioAction()为每个元素创建一个Action来完成的。生成的Action被放置在ActionMapUIResource中,使用数组元素作为键。例如,如果"AuditoryCues.cueList"数组包含一个单元素"audioKey",则创建ActionMapUIResource,然后通过actionMap.put(cueList[0], createAudioAction(cueList[0]))进行填充。

      如果默认"AuditoryCues.actionMap"的值为null且默认"AuditoryCues.cueList"的值为null,则创建一个空的ActionMapUIResource

      返回:
      包含负责播放听觉提示的Actions的ActionMap
      抛出:
      ClassCastException - 如果默认"AuditoryCues.actionMap"的值不是ActionMap,或默认"AuditoryCues.cueList"的值不是Object[]
      自:
      1.4
      参见:
    • createAudioAction

      protected Action createAudioAction(Object key)
      创建并返回用于播放声音的Action

      如果keynon-null,则使用键key从默认值创建一个Action。该值标识在Action上调用actionPerformed时要加载的声音资源。声音资源通过getClass().getResourceAsStream()加载到一个byte[]中。

      参数:
      key - 标识音频操作的键
      返回:
      用于播放源的Action,如果keynull则返回null
      自:
      1.4
      参见:
    • playSound

      protected void playSound(Action audioAction)
      如有必要,调用audioAction上的actionPerformed来播放声音。如果默认"AuditoryCues.playList"的值是包含与audioAction名称相等的String条目的non-nullObject[],则调用actionPerformed方法。
      参数:
      audioAction - 一个知道如何渲染与正在发生的系统或用户活动相关的音频的Action;如果为null,则忽略
      抛出:
      ClassCastException - 如果audioActionnon-null且默认"AuditoryCues.playList"的值不是Object[]
      自:
      1.4