加载皮肤
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");// Java默认风格
MetalLookAndFeel.initClassDefaults方法设置个中组件的风格类
Object[] arrayOfObject = {
"ButtonUI", "javax.swing.plaf.metal.MetalButtonUI",
"CheckBoxUI", "javax.swing.plaf.metal.MetalCheckBoxUI",
"ComboBoxUI", "javax.swing.plaf.metal.MetalComboBoxUI",
"DesktopIconUI", "javax.swing.plaf.metal.MetalDesktopIconUI",
"FileChooserUI", "javax.swing.plaf.metal.MetalFileChooserUI",
"InternalFrameUI", "javax.swing.plaf.metal.MetalInternalFrameUI",
"LabelUI", "javax.swing.plaf.metal.MetalLabelUI",
"PopupMenuSeparatorUI", "javax.swing.plaf.metal.MetalPopupMenuSeparatorUI",
"ProgressBarUI", "javax.swing.plaf.metal.MetalProgressBarUI",
"RadioButtonUI", "javax.swing.plaf.metal.MetalRadioButtonUI",
"ScrollBarUI", "javax.swing.plaf.metal.MetalScrollBarUI",
"ScrollPaneUI", "javax.swing.plaf.metal.MetalScrollPaneUI",
"SeparatorUI", "javax.swing.plaf.metal.MetalSeparatorUI",
"SliderUI", "javax.swing.plaf.metal.MetalSliderUI",
"SplitPaneUI", "javax.swing.plaf.metal.MetalSplitPaneUI",
"TabbedPaneUI", "javax.swing.plaf.metal.MetalTabbedPaneUI",
"TextFieldUI", "javax.swing.plaf.metal.MetalTextFieldUI",
"ToggleButtonUI", "javax.swing.plaf.metal.MetalToggleButtonUI",
"ToolBarUI", "javax.swing.plaf.metal.MetalToolBarUI",
"ToolTipUI", "javax.swing.plaf.metal.MetalToolTipUI",
"TreeUI", "javax.swing.plaf.metal.MetalTreeUI",
"RootPaneUI", "javax.swing.plaf.metal.MetalRootPaneUI"
};
部分组件风格上面没有(如JPanel),仍继承父类的风格(BasicLookAndFeel)。
看看BasicLookAndFeel.initClassDefaults方法:
Object[] arrayOfObject = {
"ButtonUI", "javax.swing.plaf.basic.BasicButtonUI",
"CheckBoxUI", "javax.swing.plaf.basic.BasicCheckBoxUI",
"ColorChooserUI", "javax.swing.plaf.basic.BasicColorChooserUI",
"FormattedTextFieldUI", "javax.swing.plaf.basic.BasicFormattedTextFieldUI",
"MenuBarUI", "javax.swing.plaf.basic.BasicMenuBarUI",
"MenuUI", "javax.swing.plaf.basic.BasicMenuUI",
"MenuItemUI", "javax.swing.plaf.basic.BasicMenuItemUI",
"CheckBoxMenuItemUI", "javax.swing.plaf.basic.BasicCheckBoxMenuItemUI",
"RadioButtonMenuItemUI", "javax.swing.plaf.basic.BasicRadioButtonMenuItemUI",
"RadioButtonUI", "javax.swing.plaf.basic.BasicRadioButtonUI",
"ToggleButtonUI", "javax.swing.plaf.basic.BasicToggleButtonUI",
"PopupMenuUI", "javax.swing.plaf.basic.BasicPopupMenuUI",
"ProgressBarUI", "javax.swing.plaf.basic.BasicProgressBarUI",
"ScrollBarUI", "javax.swing.plaf.basic.BasicScrollBarUI",
"ScrollPaneUI", "javax.swing.plaf.basic.BasicScrollPaneUI",
"SplitPaneUI", "javax.swing.plaf.basic.BasicSplitPaneUI",
"SliderUI", "javax.swing.plaf.basic.BasicSliderUI",
"SeparatorUI", "javax.swing.plaf.basic.BasicSeparatorUI",
"SpinnerUI", "javax.swing.plaf.basic.BasicSpinnerUI",
"ToolBarSeparatorUI", "javax.swing.plaf.basic.BasicToolBarSeparatorUI",
"PopupMenuSeparatorUI", "javax.swing.plaf.basic.BasicPopupMenuSeparatorUI",
"TabbedPaneUI", "javax.swing.plaf.basic.BasicTabbedPaneUI",
"TextAreaUI", "javax.swing.plaf.basic.BasicTextAreaUI",
"TextFieldUI", "javax.swing.plaf.basic.BasicTextFieldUI",
"PasswordFieldUI", "javax.swing.plaf.basic.BasicPasswordFieldUI",
"TextPaneUI", "javax.swing.plaf.basic.BasicTextPaneUI",
"EditorPaneUI", "javax.swing.plaf.basic.BasicEditorPaneUI",
"TreeUI", "javax.swing.plaf.basic.BasicTreeUI",
"LabelUI", "javax.swing.plaf.basic.BasicLabelUI",
"ListUI", "javax.swing.plaf.basic.BasicListUI",
"ToolBarUI", "javax.swing.plaf.basic.BasicToolBarUI",
"ToolTipUI", "javax.swing.plaf.basic.BasicToolTipUI",
"ComboBoxUI", "javax.swing.plaf.basic.BasicComboBoxUI",
"TableUI", "javax.swing.plaf.basic.BasicTableUI",
"TableHeaderUI", "javax.swing.plaf.basic.BasicTableHeaderUI",
"InternalFrameUI", "javax.swing.plaf.basic.BasicInternalFrameUI",
"DesktopPaneUI", "javax.swing.plaf.basic.BasicDesktopPaneUI",
"DesktopIconUI", "javax.swing.plaf.basic.BasicDesktopIconUI",
"OptionPaneUI", "javax.swing.plaf.basic.BasicOptionPaneUI",
"PanelUI", "javax.swing.plaf.basic.BasicPanelUI",
"ViewportUI", "javax.swing.plaf.basic.BasicViewportUI",
"RootPaneUI", "javax.swing.plaf.basic.BasicRootPaneUI"
};
再瞧瞧PanelUI的风格javax.swing.plaf.basic.BasicPanelUI
LookAndFeel中方法太多,看个简单的
皮肤风格已加载如LookAndFeel,现在只需要组件应用。
看看updateUI()
public void updateUI()
{
setUI((PanelUI)UIManager.getUI(this));
}
再看看setUI
public void setUI(PanelUI paramPanelUI)
{
super.setUI(paramPanelUI);
}
最后看看super(即JComponent)的setUI方法
好了,皮肤流程over。
终于在那个BasicLookAndFeel中找到了
Panel.background--->Color localColor1 --->control--->"#C0C0C0"