public abstract class LookAndFeel extends Object
LookAndFeel,顾名思义,封装了一个外观和感觉。除了安装的外观和感觉,大多数开发者不需要直接与
LookAndFeel互动。一般只有开发人员创建一个自定义的外观和感觉需要关注这个类。
Swing是建立在每个JComponent类具有特定的ComponentUI子类实现的基础。的ComponentUI通常被称为“界面”、“UI构件”,或“外观和感觉的代表”。的ComponentUI类负责提供的外观和感觉的特定组件的功能。例如,JTree需要的ComponentUI TreeUI类实现,具体ComponentUI子类的实现是由LookAndFeel提供。每个JComponent类的JComponent方法getUIClassID标识ComponentUI类要求。
每个LookAndFeel实现必须提供适当的ComponentUI类实现通过指定每个Swing的UI类ID在UIDefaults对象返回值getDefaults。例如,BasicLookAndFeel使用BasicTreeUI作为TreeUI具体实施。这是由BasicLookAndFeel提供关键值对"TreeUI"-"javax.swing.plaf.basic.BasicTreeUI"完成,在UIDefaults返回getDefaults。参考UIDefaults.getUI(JComponent)细节如何在ComponentUI类实现了。
当一个LookAndFeel安装UIManager不检查所有的UI类入侵检测系统的一个条目存在。因此,随机异常将如果当前的外观和感觉,没有提供一个特定的UI类ID和子类的实例的JComponent创造价值的发生。
UIManager每个
LookAndFeel有机会提供一组默认是分层与开发商和系统默认值。一些摇摆的组件需要的外观和感觉提供一组特定的默认值。这些都记录在需要特定默认的类中。
ComponentUIs通常需要在
JComponent的
ComponentUI提供的外观和感觉的不同性质。这通常是当
ComponentUI安装在
JComponent。设置一个属性,如果开发人员没有设置属性,则应该只做一个属性。非原始值的建议
ComponentUI只改变属性的
JComponent如果电流值
null或实现
UIResource。如果当前值
null或实现
UIResource表示属性尚未设置由开发商和用户界面是改变它的自由。例如,
BasicButtonUI.installDefaults只是改变字体的
JButton如果从
button.getFont()返回值是
null或实现
UIResource。另一方面,如果
button.getFont()返回一个值,
non-null未实施
UIResource然后
BasicButtonUI.installDefaults不会改变
JButton的字体。
原始值,如opaque,installProperty应该调用的方法。installProperty只改变相应的财产如果价值尚未被开发的变化。
ComponentUI实现应该使用这个类提供的各种安装方法为他们处理必要的检查和安装性能的推荐指南。
LookAndFeel需要访问的默认如果属性被改变的值是
null或
UIResource。例如,安装字体做如下工作:
JComponent C;字体= C getfont();如果(字体= = null | |(字体是uiresource)){c.setfont(UIManager.获得当前字体(“fontkey”));}如果字体是
null或
UIResource,缺省值表查询的关键
fontKey。所有
UIDefault's get方法如果通过
null扔
NullPointerException。因此,除非另有说明,每种不同的安装方式
LookAndFeel扔
NullPointerException如果电流值
null或
UIResource和提供的默认的关键是
null。此外,除非另有说明,所有的
install方法抛出一
NullPointerException如果
null组件是通过。
| Constructor and Description |
|---|
LookAndFeel() |
| Modifier and Type | Method and Description |
|---|---|
UIDefaults |
getDefaults()
返回外观和感觉默认值。
|
abstract String |
getDescription()
返回一一行的描述,这种外观和感觉的实施,例如
|
static Object |
getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
通过调用
Toolkit.getDefaultToolkit().getDesktopProperty()返回指定的系统桌面属性的值。
|
Icon |
getDisabledIcon(JComponent component, Icon icon)
返回一个残疾的
Icon外观。
|
Icon |
getDisabledSelectedIcon(JComponent component, Icon icon)
返回一个
Icon供残疾人使用的组件,并选择。
|
abstract String |
getID()
返回一个字符串,确定了这个外观和感觉。
|
LayoutStyle |
getLayoutStyle()
返回此看
LayoutStyle和感觉。
|
abstract String |
getName()
返回一个简短的字符串,确定了这种外观和感觉,例如
|
boolean |
getSupportsWindowDecorations()
返回
true如果
LookAndFeel返回
RootPaneUI实例支持在
JRootPane提供
Window装饰品。
|
void |
initialize()
初始化的外观和感觉。
|
static void |
installBorder(JComponent c, String defaultBorderName)
用于从默认值设置组件的边框属性的方便方法。
|
static void |
installColors(JComponent c, String defaultBgName, String defaultFgName)
设置组件的前景和背景色属性与默认值的方便性方法。
|
static void |
installColorsAndFont(JComponent c, String defaultBgName, String defaultFgName, String defaultFontName)
用于设置组件的前景、背景和字体属性与默认值的方便性方法。
|
static void |
installProperty(JComponent c, String propertyName, Object propertyValue)
用于将属性设置为具有指定名称和值的属性的方便方法,如果该属性尚未由开发人员设置。
|
abstract boolean |
isNativeLookAndFeel()
如果基础平台具有“本土”的外观和感觉,这是它的一个实现,返回
true。
|
abstract boolean |
isSupportedLookAndFeel()
返回
true如果底层平台支持或允许的外观和感觉。
|
static void |
loadKeyBindings(InputMap retMap, Object[] keys)
填充指定的绑定一个
InputMap。
|
static ComponentInputMap |
makeComponentInputMap(JComponent c, Object[] keys)
创建一个
ComponentInputMapUIResource
keys。
|
static Object |
makeIcon(类<?> baseClass, String gifFile)
创建并返回一个
UIDefault.LazyValue加载图像。
|
static InputMap |
makeInputMap(Object[] keys)
创建一个
InputMapUIResource
keys。
|
static JTextComponent.KeyBinding[] |
makeKeyBindings(Object[] keyBindingList)
建筑
KeyBindings数组方便的方法。
|
void |
provideErrorFeedback(Component component)
当用户尝试调用无效的操作,如为不可编辑
JTextField有焦点的粘贴。
|
String |
toString()
返回显示并标识该对象属性的字符串。
|
void |
uninitialize()
反初始化的外观和感觉。
|
static void |
uninstallBorder(JComponent c)
卸载边境便利的方法。
|
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)
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)
public static void installBorder(JComponent c, String defaultBorderName)
null或
UIResource实例。
c组件设置边界
defaultBorderName键指定边界
NullPointerException -如
exceptions
public static void uninstallBorder(JComponent c)
UIResource,它是集
null。
c组件卸载边界
null
c
NullPointerException
public static void installProperty(JComponent c, String propertyName, Object propertyValue)
UIResource标记,这种方法使用私有状态确定是否已设置属性的客户端。
c目标组件设置属性
propertyName名称的属性设置
propertyValue -属性值
IllegalArgumentException -如果指定的属性不一,可以使用这种方法
ClassCastException -如果属性值没有设置由开发商和类型不匹配的属性的类型
NullPointerException -如果
c是
null,或指定的属性尚未设置由开发商和
propertyValue是
null
public static JTextComponent.KeyBinding[] makeKeyBindings(Object[] keyBindingList)
KeyBindings数组方便的方法。虽然这种方法并不过时,开发商应利用
ActionMap和
InputMap供应键绑定。
此方法返回KeyBindings数组,每一个交流key-action对keyBindingList。一个key可以由KeyStroke.getKeyStroke方法中指定的格式String,或KeyStroke。这对action部分是String对应的Action名称。
下面的例子说明六交流key-action对创造一个KeyBinding阵列:
jtextcomponent。快捷键[ ] multilinebindings = makekeybindings(新对象[ ] {“上”,defaulteditorkit.upaction,“下”,defaulteditorkit.downaction,“page_up”,defaulteditorkit.pageupaction,“page_down”,defaulteditorkit.pagedownaction,“进入”,defaulteditorkit.insertbreakaction,“标签”,defaulteditorkit.inserttabaction});如果
keyBindingList's长度是奇数,最后一个元素被忽略。
提供一action key或在相应的价值null创建KeyBinding的key-action对结果部分null价值。随着摆动的其他部分non-null期望值在KeyBinding,你应该避免提供null无论是key或action的key-action对。
keyBindingList -
key-action对数组
KeyBindings数组
null
keyBindingList
NullPointerException
ClassCastException -如果对
key部分不是
KeyStroke或
String,或对
action部分不是
String
ActionMap,
InputMap,
KeyStroke.getKeyStroke(char)
public static InputMap makeInputMap(Object[] keys)
InputMapUIResource
keys。这是一个用于创建一个新的
InputMapUIResource,方便的方法调用和返回的
InputMapUIResource
loadKeyBindings(map, keys)。
keys -交替
keystroke-action key对对所描述的
loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
InputMapUIResource
loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
public static ComponentInputMap makeComponentInputMap(JComponent c, Object[] keys)
ComponentInputMapUIResource
keys。这是一个用于创建一个新的
ComponentInputMapUIResource,方便的方法调用和返回的
ComponentInputMapUIResource
loadKeyBindings(map, keys)。
c组件创建
ComponentInputMapUIResource与
keys -交替
keystroke-action key对对所描述的
loadKeyBindings(javax.swing.InputMap, java.lang.Object[])
InputMapUIResource
null
c
IllegalArgumentException
loadKeyBindings(javax.swing.InputMap, java.lang.Object[]),
ComponentInputMapUIResource
public static void loadKeyBindings(InputMap retMap, Object[] keys)
InputMap。绑定提供交流
keystroke-action key对列表。的
keystroke是
KeyStroke实例,或
String标识
KeyStroke的结合。指为特定格式的
KeyStroke.getKeyStroke(String)。这对
action key是关键部分在
InputMap注册为
KeyStroke。
以下列举了两个key-action对加载InputMap:
它。loadkeybindings(inputmap,新对象[ ] {“控制X”,“切割”,“控制V”,“粘贴”});
提供一个null列表的绑定(keys)不retMap以任何方式改变。
从InputMap去除keystroke's进入指定null action key结果。一个null keystroke被忽略。
retMap -
InputMap添加
key-action双
keys绑定添加到
retMap
NullPointerException -如果
keys是
non-null,不是空的,和
retMap是
null
KeyStroke.getKeyStroke(String),
InputMap
public static Object makeIcon(类<?> baseClass, String gifFile)
UIDefault.LazyValue加载图像。返回值是
UIDefaults.LazyValue实现。当
createValue是返回的对象调用,图像的加载。如果图像是
non-null,然后包裹在实现一个
Icon
UIResource。图像
Class.getResourceAsStream(gifFile)
此方法不以任何方式检查参数。这是强烈建议non-null值提供其他异常时可能出现的createValue是返回的对象调用。
baseClass用于加载资源
类
gifFile -路径图像加载
UIDefaults.LazyValue;当解决的
LazyValue加载指定的图像
UIDefaults.LazyValue,
Icon,
Class.getResourceAsStream(String)
public LayoutStyle getLayoutStyle()
LayoutStyle和感觉。这不再
null。
你通常不使用LayoutStyle从外观和感觉,而不是使用LayoutStyle方法getInstance。
LayoutStyle和感觉
LayoutStyle.getInstance()
public void provideErrorFeedback(Component component)
JTextField有焦点的粘贴。默认实现的哔哔声。希望不同的行为的子类应该重写这个,并提供额外的反馈。
component -
Component发生错误,可能是
null指示错误条件不直接与
Component相关
public static Object getDesktopPropertyValue(String systemPropertyName, Object fallbackValue)
Toolkit.getDefaultToolkit().getDesktopProperty()返回指定的系统桌面属性的值。如果指定的属性的值
null,
fallbackValue返回。
systemPropertyName -系统桌面属性被查询的名称
fallbackValue -作为价值系统如果值为空返回的对象
Toolkit.getDesktopProperty(java.lang.String)
public Icon getDisabledIcon(JComponent component, Icon icon)
Icon外观。这种方法是用来产生一个残疾人
Icon时未指定。例如,如果你创建了一个
JButton只指定一个
Icon通过
setIcon这个方法来生成禁用
Icon。如果
null是
icon这个方法返回
一些看起来和感觉不可能使残疾人Icon,在这种情况下,他们会忽略这。
null通过。
component -
JComponent将显示
Icon,可能
null
icon -
Icon产生残疾人图标
Icon,或
null如果合适的
Icon无法生成
public Icon getDisabledSelectedIcon(JComponent component, Icon icon)
Icon供残疾人使用的组件,并选择。这种方法被用来生成
Icon组件,在残疾人和选定的国家却没有这种状态的具体
Icon。例如,如果你创建了一个
JButton只指定一个
Icon通过
setIcon这个方法来生成禁用和选择
Icon。如果
null是
icon这个方法返回
null通过。
一些看起来和感觉不可能使残疾人和Icon选择,在这种情况下,他们会忽略这。
component -
JComponent将显示
Icon,可能
null
icon -
Icon产生残疾和选定的图标
null如果合适的
Icon无法生成。
public abstract String getName()
public abstract String getID()
public abstract String getDescription()
public boolean getSupportsWindowDecorations()
true如果
LookAndFeel返回
RootPaneUI实例支持在
JRootPane提供
Window
默认的实现返回false,子类,支持Window装饰应重写此回true。
true如果
RootPaneUI实例的创建和感受看支持客户端的装饰品
JDialog.setDefaultLookAndFeelDecorated(boolean),
JFrame.setDefaultLookAndFeelDecorated(boolean),
JRootPane.setWindowDecorationStyle(int)
public abstract boolean isNativeLookAndFeel()
true。例如,当底层平台的Solaris运行CDE CDE /主题的外观和感觉的实现将返回
true。
true如果这看起来和感觉代表底层平台的外观和感觉
public abstract boolean isSupportedLookAndFeel()
true如果底层平台支持或允许的外观和感觉。此方法返回
false如果感觉依赖于特殊的资源或法律协议,目前平台定义不。
true如果这是一个支持的外观和感觉
UIManager.setLookAndFeel(javax.swing.LookAndFeel)
public void initialize()
UIManager时调用的外观和感觉是安装作为当前的外观和感觉。这个方法被调用之前调用
getDefaults
UIManager。此方法用于执行任何初始化的外观和感觉。子类应该做他们需要的任何一次性的设置,而不是在一个静态的初始化,因为外观和感觉类的对象可以被加载就发现
isSupportedLookAndFeel()返回
false。
public void uninitialize()
UIManager外观当卸载。例如,
UIManager.setLookAndFeel调用此当外观改变。
子类可以选择在这里释放一些资源。
public UIDefaults getDefaults()
UIManager调用当外观设置为当前的外观和感觉,
initialize后被调用。
initialize(),
uninitialize(),
UIManager.setLookAndFeel(javax.swing.LookAndFeel)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.