java.lang.Object javax.swing.LookAndFeel javax.swing.plaf.basic.BasicLookAndFeel javax.swing.plaf.metal.MetalLookAndFeel
public class MetalLookAndFeel
Java 外观,也称为 Metal。
每个由 MetalLookAndFeel
提供的 ComponentUI
从默认表中派生其行为。除非另行说明,否则此包中每个 ComponentUI
实现都记录它们所使用的默认值集合。除非另行说明,否则调用 installUI
时,将安装默认值并遵循 LookAndFeel
中描述的安装默认值的建议。
MetalLookAndFeel
从 MetalTheme
派生其调色板和字体。默认主题为 OceanTheme
。可以使用 setCurrentTheme
方法更改主题,有关更改主题的详细信息,请参阅该方法。在 1.5 之前,默认主题为 DefaultMetalTheme
。可以将系统属性 "swing.metalTheme"
设置为 "steel"
,指示默认主题应该为 DefaultMetalTheme
。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
MetalTheme
,
DefaultMetalTheme
,
OceanTheme
构造方法摘要 | |
---|---|
MetalLookAndFeel() |
从类 javax.swing.plaf.basic.BasicLookAndFeel 继承的方法 |
---|
createAudioAction, getAudioActionMap, initialize, loadSystemColors, playSound, uninitialize |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public MetalLookAndFeel()
方法详细信息 |
---|
public String getName()
"Metal"
。
LookAndFeel
中的
getName
public String getID()
"Metal"
。
LookAndFeel
中的
getID
public String getDescription()
"The Java(tm) Look and Feel"
。
LookAndFeel
中的
getDescription
public boolean isNativeLookAndFeel()
false
;
MetalLookAndFeel
不是本机外观。
LookAndFeel
中的
isNativeLookAndFeel
false
public boolean isSupportedLookAndFeel()
true
;可以在任意平台上运行
MetalLookAndFeel
。
LookAndFeel
中的
isSupportedLookAndFeel
true
UIManager.setLookAndFeel(javax.swing.LookAndFeel)
public boolean getSupportsWindowDecorations()
true
; metal 可以提供
Window
装饰。
LookAndFeel
中的
getSupportsWindowDecorations
protected void initClassDefaults(UIDefaults table)
uiClassID
到 ui 类完全限定名的映射关系填充
table
。
MetalLookAndFeel
在名为 MetalXXXUI 的
javax.swing.plaf.metal
包为每个类注册一个条目。字符串
XXX
为 Swing 的一个 uiClassID。对于在 metal 中没有类的
uiClassID
,使用
javax.swing.plaf.basic
中对应的类。例如,metal 没有名为
"MetalColorChooserUI"
的类,这种情况下使用
javax.swing.plaf.basic.BasicColorChooserUI
。
BasicLookAndFeel
中的
initClassDefaults
table
- 要添加条目的
UIDefaults
实例
NullPointerException
- 如果
table
为
null
BasicLookAndFeel.initClassDefaults(javax.swing.UIDefaults)
protected void initSystemColorDefaults(UIDefaults table)
table
。将以下值添加到
table
:
Key | Value |
---|---|
"desktop" | theme.getDesktopColor() |
"activeCaption" | theme.getWindowTitleBackground() |
"activeCaptionText" | theme.getWindowTitleForeground() |
"activeCaptionBorder" | theme.getPrimaryControlShadow() |
"inactiveCaption" | theme.getWindowTitleInactiveBackground() |
"inactiveCaptionText" | theme.getWindowTitleInactiveForeground() |
"inactiveCaptionBorder" | theme.getControlShadow() |
"window" | theme.getWindowBackground() |
"windowBorder" | theme.getControl() |
"windowText" | theme.getUserTextColor() |
"menu" | theme.getMenuBackground() |
"menuText" | theme.getMenuForeground() |
"text" | theme.getWindowBackground() |
"textText" | theme.getUserTextColor() |
"textHighlight" | theme.getTextHighlightColor() |
"textHighlightText" | theme.getHighlightedTextColor() |
"textInactiveText" | theme.getInactiveSystemTextColor() |
"control" | theme.getControl() |
"controlText" | theme.getControlTextColor() |
"controlHighlight" | theme.getControlHighlight() |
"controlLtHighlight" | theme.getControlHighlight() |
"controlShadow" | theme.getControlShadow() |
"controlDkShadow" | theme.getControlDarkShadow() |
"scrollbar" | theme.getControl() |
"info" | theme.getPrimaryControl() |
"infoText" | theme.getPrimaryControlInfo() |
theme
对应于当前
MetalTheme
。
BasicLookAndFeel
中的
initSystemColorDefaults
table
- 要添加值的
UIDefaults
对象
NullPointerException
- 如果
table
为
null
SystemColor
,
BasicLookAndFeel.getDefaults()
,
BasicLookAndFeel.loadSystemColors(javax.swing.UIDefaults, java.lang.String[], boolean)
protected void initComponentDefaults(UIDefaults table)
table
。
BasicLookAndFeel
中的
initComponentDefaults
table
- 要添加值的
UIDefaults
NullPointerException
- 如果
table
为
null
protected void createDefaultTheme()
MetalTheme
为
非 null
。此方法是
getCurrentTheme
的覆盖方法。
getCurrentTheme()
public UIDefaults getDefaults()
createDefaultTheme()
、
super.getDefaults()
和
getCurrentTheme().addCustomEntriesToTable(table)
。
虽然此方法是公共方法,但只当外观被设置为当前外观并调用了 initialize
之后才应该由 UIManager
调用此方法。
BasicLookAndFeel
中的
getDefaults
public void provideErrorFeedback(Component component)
JTextField
中进行粘贴。默认实现蜂鸣。期待不同行为的子类应重写它,并提供其他的反馈。
LookAndFeel
中的
provideErrorFeedback
component
- 其中发生错误的
Component
,可以为
null
,指示错误条件与某个
Component
并无直接关联
public static void setCurrentTheme(MetalTheme theme)
MetalLookAndFeel
使用的主题。
设置主题后,需要重新安装 MetalLookAndFeel
并重新创建 ui。以下代码说明了如何完成此操作:
MetalLookAndFeel.setCurrentTheme(theme); // re-install the Metal Look and Feel UIManager.setLookAndFeel(new MetalLookAndFeel()); // Update the ComponentUIs for all Components. This // needs to be invoked for all windows. SwingUtilities.updateComponentTreeUI(rootComponent);如果此操作未完成,则结果是不确定的。
theme
- 要使用的主题
NullPointerException
- 如果
theme
为
null
getCurrentTheme()
public static MetalTheme getCurrentTheme()
MetalLookAndFeel
当前正在使用的主题。如果当前主题为
null
,则创建默认主题。
setCurrentTheme(javax.swing.plaf.metal.MetalTheme)
public Icon getDisabledIcon(JComponent component, Icon icon)
Icon
。此方法用于在未指定图标时生成被禁用的
Icon
。例如,如果创建了一个
JButton
,并通过
setIcon
仅指定了一个
Icon
,则会调用此方法来生成禁用的
Icon
。如果将 null 作为
icon
传递,则此方法返回 null。
某些外观可能无法呈现禁用图标,在此情况下,外观将忽略此图标。
LookAndFeel
中的
getDisabledIcon
component
- 将显示 Icon 的 JComponent,可以为 null
icon
- 从其生成禁用图标的 Icon。
public Icon getDisabledSelectedIcon(JComponent component, Icon icon)
I