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.