(swing读书笔记)Swing Look And Feel(1)
By cszhao1980
Swing出现之初,就提供一种非常前卫的功能,即PLAF——可拔插的Look And Feel,我们可以非常轻松的动态改变Swing程序的Look and Feel,哇乌,真酷。
JAVA的跨平台特性决定了它需要这样一种功能——它可以模拟所在平台的Look And Feel,从而使自己看起来像一个原生程序。不过,在大多数的平台上,JAVA程序都 默认使用META Look And Feel(在苹果的平台上,默认使用MAC Look And Feel)。
当然,我们可以轻松的改变这一点,比如下面的语句会将Look And Feel设置为Motif样式的:
UIManager.setLookAndFeel(new com.sun.java.swing.plaf.motif.MotifLookAndFeel( ));
遗憾的是,酷炫的功能往往都很难以理解,PLAF也是如此。
本文试图将这部分讲的尽量清楚——但只是一个High Level View,忽略了大量细节。
一. UI delegate
首先要理解的概念是 UI Delegate。
Swing Component并不自己绘制自身,而是将这个功能委托给UI delegate来完成。每个Component都有自己的UI Delegate,如下图所示,JTree组件将绘制工作委托给了MetalTreeUI对象来完成: