- java.lang.Object
-
- javax.swing.LookAndFeel
-
- 已知直接子类:
-
BasicLookAndFeel,MultiLookAndFeel
public abstract class LookAndFeel extends Object
LookAndFeel,顾名思义,封装外观。 除了安装外观,大多数开发人员不需要直接与LookAndFeel进行交互。 一般来说,创建自定义外观的开发人员只需要关心这个类。Swing建立在每个
JComponent子类的基础上,具有特定的ComponentUI子类的实现。ComponentUI通常被称为“ui”,“ui”或“look-feel delegate”。ComponentUI子类负责提供组件的外观和特定功能。 例如,JTree需要实现ComponentUI子类TreeUI。 特定ComponentUI子类的实现由LookAndFeel提供。 每个JComponent子类标识ComponentUI子类,它需要通过JComponent方法getUIClassID。每个
LookAndFeel实现必须通过为从getDefaults返回的UIDefaults对象中为每个Swing的ui类标识指定一个值来提供适当的ComponentUI子类的实现。 例如,BasicLookAndFeel使用BasicTreeUI作为具体实施TreeUI。 这是由BasicLookAndFeel提供的键值对"TreeUI"-"javax.swing.plaf.basic.BasicTreeUI",在UIDefaults从getDefaults返回。 有关如何获取ComponentUI子类的实现的详细信息,请参阅UIDefaults.getUI(JComponent)。当
LookAndFeel安装UIManager不会检查的项存在所有ui类id。 因此,如果当前的外观和感觉没有为特定的ui类id提供值,并且创建JComponent子类的实例,则会发生随机异常。外观和感觉的建议
如UIManager每个LookAndFeel都有机会提供一组分层开发人员和系统默认值的默认值。 一些Swing的组件需要外观和感觉来提供一组特定的默认值。 这些记录在需要特定默认值的类中。ComponentUIs and defaults
所有ComponentUIs通常需要设置JComponent上的各种属性,ComponentUI是提供外观和感觉。 这通常在ComponentUI安装在JComponent上时JComponent。 只有开发人员未设置属性,才能设置属性。 对于非原始值,建议的ComponentUI仅改变在属性JComponent如果当前值是null或实现UIResource。 如果当前值为null或实现UIResource则表示该属性未由开发人员设置,并且ui可以自由更改。 例如,BasicButtonUI.installDefaults仅改变对字体JButton如果从返回值button.getFont()是null或实现UIResource。 另一方面,如果button.getFont()返回一个没有实现UIResource的non-null值,那么BasicButtonUI.installDefaults将不会更改JButton的字体。对于原始值,例如
opaque,应该调用方法installProperty。installProperty只有在开发人员尚未更改该值时才更改相应的属性。ComponentUI实现应使用此类提供的各种安装方法,因为它们处理必要的检查并使用推荐的指导原则安装该属性。例外
如果要更改的属性的值为null或UIResource则null提供的所有安装方法LookAndFeel需要访问默认值。 例如,安装该字体将执行以下操作:JComponent c; Font font = c.getFont(); if (font == null || (font instanceof UIResource)) { c.setFont(UIManager.getFont("fontKey")); }如果字体为null或UIResource,则使用键fontKey查询默认表。 所有的UIDefault's获取方法抛出一个NullPointerException如果通过在null。 因此,除非另有说明各个不同的安装方法LookAndFeel掷一个NullPointerException如果当前值是null或UIResource和提供的默认密钥是null。 另外,除非另有说明,否则所有install方法都会抛出一个NullPointerException如果一个null组件被传入。- 从以下版本开始:
- 1.2
-
-
构造方法摘要
构造方法 Constructor 描述 LookAndFeel()
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 UIDefaultsgetDefaults()返回外观和默认值。abstract StringgetDescription()返回这个外观的一行描述实现,例如static ObjectgetDesktopPropertyValue(String systemPropertyName, Object fallbackValue)通过调用Toolkit.getDefaultToolkit().getDesktopProperty()返回指定的系统桌面属性的Toolkit.getDefaultToolkit().getDesktopProperty()。IcongetDisabledIcon(JComponent component, Icon icon)返回一个禁用外观的Icon。IcongetDisabledSelectedIcon(JComponent component, Icon icon)返回一个Icon,供被同样选择的禁用组件使用。abstract StringgetID()返回一个识别这种外观和感觉的字符串。LayoutStylegetLayoutStyle()返回LayoutStyle为这种外观和感觉。abstract StringgetName()返回一个标识这种外观和感觉的短字符串,例如booleangetSupportsWindowDecorations()返回true如果LookAndFeel返回的RootPaneUI实例支持在JRootPane提供Window装饰。voidinitialize()初始化外观和感觉。static voidinstallBorder(JComponent c, String defaultBorderName)使用默认值设置组件边框属性的便利方法。static voidinstallColors(JComponent c, String defaultBgName, String defaultFgName)使用默认值设置组件的前景和背景颜色属性的便利方法。static voidinstallColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)使用默认值设置组件的前景,背景和字体属性的便利方法。static voidinstallProperty(JComponent c, String propertyName, Object propertyValue)如果开发人员尚未设置该属性,则在方法上安装具有指定名称和值的属性。abstract booleanisNativeLookAndFeel()如果底层平台具有“本机”的外观,这是一个实现,返回true。abstract booleanisSupportedLookAndFeel()返回true如果底层平台支持和/或允许这种外观和感觉。static voidloadKeyBindings(InputMap retMap, Object[] keys)使用指定的绑定填充InputMap。static ComponentInputMapmakeComponentInputMap(JComponent c, Object[] keys)创建ComponentInputMapUIResource从keys。static ObjectmakeIcon(Class<?> baseClass, String gifFile)创建并返回加载图像的UIDefault.LazyValue。static InputMapmakeInputMap(Object[] keys)创建一个InputMapUIResource从keys。static JTextComponent.KeyBinding[]makeKeyBindings(Object[] keyBindingList)方便构建KeyBindings数组的KeyBindings。voidprovideErrorFeedback(Component component)当用户尝试无效操作时调用,例如粘贴到具有焦点的不可编辑的JTextField中。StringtoString()返回显示和标识此对象属性的字符串。voiduninitialize()初始化外观和感觉。static voiduninstallBorder(JComponent c)方便卸载边框的方法。
-
-
-
方法详细信息
-
installColors
public static void installColors(JComponent c, String defaultBgName, String defaultFgName)
使用默认值设置组件的前景和背景颜色属性的便利方法。 仅当当前值为null或UIResource才会设置属性。- 参数
-
c- 组件设置颜色 -
defaultBgName- 背景的钥匙 -
defaultFgName- 前景的键 - 异常
-
NullPointerException-如上述 exceptions - 另请参见:
-
installColorsAndFont(javax.swing.JComponent, java.lang.String, java.lang.String, java.lang.String),UIManager.getColor(java.lang.Object)
-
installColorsAndFont
public static void installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)
使用默认值设置组件的前景,背景和字体属性的便利方法。 仅当当前值为null或UIResource,属性才会设置。- 参数
-
c- 组件设置为颜色和字体 -
defaultBgName- 背景的钥匙 -
defaultFgName- 前景键 -
defaultFontName- 字体的键 - 异常
-
NullPointerException- 如 exceptions所述 - 另请参见:
-
installColors(javax.swing.JComponent, java.lang.String, java.lang.String),UIManager.getColor(java.lang.Object),UIManager.getFont(java.lang.Object)
-
installBorder
public static void installBorder(JComponent c, String defaultBorderName)
使用默认值设置组件边框属性的便利方法。 边框仅在边框为null或null的实例UIResource。- 参数
-
c- 组件打开边框 -
defaultBorderName- 指定边框的键 - 异常
-
NullPointerException- 如 exceptions所述
-
uninstallBorder
public static void uninstallBorder(JComponent c)
方便卸载边框的方法。 如果组件的边框为UIResource,则设置为null。- 参数
-
c- 卸载边框的组件 - 异常
-
NullPointerException- 如果c是null
-
installProperty
public static void installProperty(JComponent c, String propertyName, Object propertyValue)
如果开发人员尚未设置该属性,则在方法上安装具有指定名称和值的属性。 该方法旨在由需要为原始类型(boolean,int,..)的属性指定默认值的ui委托实例使用,但不希望覆盖客户端设置的值。 由于原始属性值不能用UIResource标记包装,因此此方法使用私有状态来确定属性是否已由客户端设置。- 参数
-
c- 设置属性的目标组件 -
propertyName- 要设置的属性的名称 -
propertyValue- 物业的价值 - 异常
-
IllegalArgumentException- 如果指定的属性不是可以使用此方法设置的属性 -
ClassCastException- 如果属性值尚未由开发人员设置,并且类型与属性的类型不匹配 -
NullPointerException- 如果c是null,或者指定的属性尚未被开发者设置,而propertyValue是null - 从以下版本开始:
- 1.5
-
makeKeyBindings
public static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
构建KeyBindings数组的便利方法。 虽然此方法不被弃用,但开发人员应该使用ActionMap和InputMap来提供密钥绑定。此方法返回一个
KeyBindings的数组,每个交替key-action对中的一个keyBindingList。 甲key可以是一个String在由指定的格式KeyStroke.getKeyStroke法或KeyStroke。 的action的双部分是String对应于名称Action。以下示例说明从六个交替的
key-action对中创建一个KeyBinding阵列:JTextComponent.KeyBinding[] multilineBindings = makeKeyBindings( new Object[] { "UP", DefaultEditorKit.upAction, "DOWN", DefaultEditorKit.downAction, "PAGE_UP", DefaultEditorKit.pageUpAction, "PAGE_DOWN", DefaultEditorKit.pageDownAction, "ENTER", DefaultEditorKit.insertBreakAction, "TAB", DefaultEditorKit.insertTabAction });如果长度为keyBindingList's,则最后一个元素被忽略。供给
null为任一值key或action的一部分key-action在创建一对结果KeyBinding与对应值null。 Swing的其他地区预计non-null的值KeyBinding,应该避免将null因为无论是key或者action的一部分key-action对。- 参数
-
keyBindingList- 一组key-action对 - 结果
-
一个
KeyBindings的阵列 - 异常
-
NullPointerException- 如果keyBindingList是null -
ClassCastException- 如果key一部分对不是KeyStroke或String,或action部分对不是String - 另请参见:
-
ActionMap,InputMap,KeyStroke.getKeyStroke(char)
-
makeInputMap
public static InputMap makeInputMap(Object[] keys)
创建一个InputMapUIResource从keys。 这是创建一个新的InputMapUIResource的方便方法,调用loadKeyBindings(map, keys),并返回InputMapUIResource。- 参数
-
keys- 交替的keystroke-action key对,如loadKeyBindings(javax.swing.InputMap, java.lang.Object[])所述 - 结果
-
新创建和填充
InputMapUIResource - 从以下版本开始:
- 1.3
- 另请参见:
-
loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
-
makeComponentInputMap
public static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys)
创建ComponentInputMapUIResource从keys。 这是创建一个新的ComponentInputMapUIResource,调用loadKeyBindings(map, keys)并返回ComponentInputMapUIResource的便利方法。- 参数
-
c- 组件创建ComponentInputMapUIResource带 -
keys-交替对keystroke-action key对作为中所述loadKeyBindings(javax.swing.InputMap, java.lang.Object[]) - 结果
-
新创建和填充
InputMapUIResource - 异常
-
IllegalArgumentException- 如果c是null - 从以下版本开始:
- 1.3
- 另请参见:
-
loadKeyBindings(javax.swing.InputMap, java.lang.Object[]),ComponentInputMapUIResource
-
loadKeyBindings
public static void loadKeyBindings(InputMap retMap, Object[] keys)
使用指定的绑定填充InputMap。 绑定作为交替keystroke-action key对的列表提供。 所述keystroke是任一的一个实例KeyStroke或String标识KeyStroke的结合。 具体格式请参考KeyStroke.getKeyStroke(String)。action key一部分是InputMap为KeyStroke注册的密钥。以下说明如何加载
InputMap两个key-action对:LookAndFeel.loadKeyBindings(inputMap, new Object[] { "control X", "cut", "control V", "paste" });提供
null绑定列表(keys)不会以任何方式更改retMap。指定
nullaction key导致从InputMap中删除keystroke's条目。 Anullkeystroke被忽略。- 参数
-
retMap-InputMap加入key-action对 -
keys- 绑定添加到retMap - 异常
-
NullPointerException- 如果keys是non-null,不是空,而retMap是null - 从以下版本开始:
- 1.3
- 另请参见:
-
KeyStroke.getKeyStroke(String),InputMap
-
makeIcon
public static Object makeIcon(Class<?> baseClass, String gifFile)
创建并返回加载图像的UIDefault.LazyValue。 返回的值是一个UIDefaults.LazyValue的实现。 当返回的对象调用createValue,图像被加载。 如果图像是non-null时,然后包装在一个Icon实现UIResource。 图像使用Class.getResourceAsStream(gifFile)加载。此方法不会以任何方式检查参数。 强烈建议提供
non-null值,否则在返回的对象上调用createValue时可能会发生异常。- 参数
-
baseClass-Class用于加载资源 -
gifFile- 加载图像的路径 - 结果
-
一个
UIDefaults.LazyValue; 当解析LazyValue加载指定的图像 - 另请参见:
-
UIDefaults.LazyValue,Icon,Class.getResourceAsStream(String)
-
getLayoutStyle
public LayoutStyle getLayoutStyle()
返回LayoutStyle为这种外观和感觉。 这从来没有返回null。一般不要使用
LayoutStyle的外观和感觉,而是使用LayoutStyle方法getInstance。- 结果
-
LayoutStyle为这种外观和感觉 - 从以下版本开始:
- 1.6
- 另请参见:
-
LayoutStyle.getInstance()
-
provideErrorFeedback
public void provideErrorFeedback(Component component)
当用户尝试无效操作时调用,例如粘贴到具有焦点的不可编辑的JTextField中。 默认实现哔声。 希望不同行为的子类应该覆盖此,并提供其他反馈。- 参数
-
component-Component发生错误,可能是null表示错误状况与Component没有直接关联 - 从以下版本开始:
- 1.4
-
getDesktopPropertyValue
public static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
通过调用Toolkit.getDefaultToolkit().getDesktopProperty()返回指定的系统桌面属性的Toolkit.getDefaultToolkit().getDesktopProperty()。 如果指定属性的值为null,则返回fallbackValue。- 参数
-
systemPropertyName- 要查询的系统桌面属性的名称 -
fallbackValue- 如果系统值为null,fallbackValue返回的对象作为值 - 结果
- 桌面属性的当前值
- 从以下版本开始:
- 1.4
- 另请参见:
-
Toolkit.getDesktopProperty(java.lang.String)
-
getDisabledIcon
public Icon getDisabledIcon(JComponent component, Icon icon)
返回一个禁用外观的Icon。 当一个没有被指定时,该方法用于生成一个禁用的Icon。 例如,如果您创建一个JButton并且仅通过setIcon指定一个Icon,setIcon此方法来生成禁用的Icon。 如果null传递为icon此方法返回null。有些看起来和感觉可能不会使残疾人
Icon,在这种情况下他们会忽略这个。- 参数
-
component-JComponent会显示Icon,可能是null -
icon-Icon从中生成禁用的图标 - 结果
-
禁用
Icon或null如果无法生成合适的Icon - 从以下版本开始:
- 1.5
-
getDisabledSelectedIcon
public Icon getDisabledSelectedIcon(JComponent component, Icon icon)
返回一个Icon供被还被选中的禁用组件使用。 此方法用于为禁用和选定状态的组件生成Icon,但对于该状态不具有特定的Icon。 例如,如果您创建一个JButton并且仅通过setIcon指定一个Icon,setIcon此方法来生成禁用且选定的Icon。 如果null通过为icon此方法返回null。有些看起来和感觉可能不会渲染残疾人并选择
Icon,在这种情况下,他们会忽略这一点。- 参数
-
component-JComponent会显示Icon,可能是null -
icon-Icon从中生成禁用和选择的图标 - 结果
-
禁用和选择的图标,或
null如果无法生成合适的Icon。 - 从以下版本开始:
- 1.5
-
getName
public abstract String getName()
返回一个识别这种外观的短字符串,例如“CDE / Motif”。 此字符串应适合于菜单项。 不同的外观和感觉应该有不同的名称,例如MotifLookAndFeel的一个子类,改变一些组件的渲染方式应该被称为“CDE / Motif My Way”; 对于尝试从名单列表中选择L&F的用户来说,这将是有用的。- 结果
- 短标识符的外观和感觉
-
getID
public abstract String getID()
返回一个识别这种外观和感觉的字符串。 该字符串将被想要识别众所周知的外观和感觉实现的应用程序/服务使用。 目前,众所周知的名字是“Motif”,“Windows”,“Mac”,“Metal”。 请注意,从不会对外观或感觉进行任何根本改变的众所周知的超类派生的LookAndFeel不应该覆盖此方法。- 结果
- 标识符的外观和感觉
-
getDescription
public abstract String getDescription()
返回一行描述这种外观和感觉的实现,例如“CDE / Motif Look and Feel”。 此字符串用于用户,例如在窗口的标题或ToolTip消息中。- 结果
- 外观简洁的描述
-
getSupportsWindowDecorations
public boolean getSupportsWindowDecorations()
返回true如果LookAndFeel返回RootPaneUI实例支持在JRootPane提供Window装饰。默认实现返回
false,支持Window装饰的子类应该覆盖此值并返回true。- 结果
-
true如果由这种外观创建的RootPaneUI实例支持客户端装饰 - 从以下版本开始:
- 1.4
- 另请参见:
-
JDialog.setDefaultLookAndFeelDecorated(boolean),JFrame.setDefaultLookAndFeelDecorated(boolean),JRootPane.setWindowDecorationStyle(int)
-
isNativeLookAndFeel
public abstract boolean isNativeLookAndFeel()
如果底层平台具有“本机”的外观和感觉,这是一个实现,返回true。 例如,当底层平台是Solaris运行CDE时,CDE / Motif的外观实现将返回true。- 结果
-
true如果这种外观和感觉代表底层平台的外观和感觉
-
isSupportedLookAndFeel
public abstract boolean isSupportedLookAndFeel()
如果底层平台支持和/或允许此外观,则返回true。 如果外观和视觉依赖于未为当前平台定义的特殊资源或法律协议,则此方法返回false。- 结果
-
true如果这是支持的外观和感觉 - 另请参见:
-
UIManager.setLookAndFeel(javax.swing.LookAndFeel)
-
initialize
public void initialize()
初始化外观和感觉。 虽然这种方法是公开的,但只有当外观和感觉被安装为当前的外观时,才应该由UIManager调用。 在UIManager调用getDefaults之前调用此方法。 该方法旨在对外观进行任何初始化。 子类应该在这里进行任何一次性设置,而不是在静态初始化器中进行任何一次性设置,因为可以加载外观和感觉类对象,以发现isSupportedLookAndFeel()返回false。
-
uninitialize
public void uninitialize()
初始化外观和感觉。 虽然这种方法是公开的,但是只有当外观和感觉被卸载时才应该由UIManager调用。 例如,当外观和感觉改变时,UIManager.setLookAndFeel调用它。子类可以选择在这里释放一些资源。
-
getDefaults
public UIDefaults getDefaults()
返回外观和默认值。 虽然这种方法是公开的,但是只有当外观和感觉被设置为当前的外观并且在initialize被调用之后才应该由UIManager调用。- 结果
- 外观和默认值
- 另请参见:
-
initialize(),uninitialize(),UIManager.setLookAndFeel(javax.swing.LookAndFeel)
-
-