Swing LookandFeel制作的总结

来源:互联网 发布:量子技术 知乎 编辑:程序博客网 时间:2024/05/16 11:30

加载皮肤

 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"
 

原创粉丝点击