扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年7月4日
关键字:
使用PLAF
Swing包含几个UI委托集。每个集合中包含了用于大部分Swing组件的ComponentUI实现,且每个这样的集合称为一个PLAF实现。
javax.swing.plaf包有继承自ComponentUI的抽象类组成,javax.swing.plaf.basic包中的类扩展了这些抽象类用来实现基本的外观。UI委托集合是所有其它外观类用作构建自己的外观的基类。基本外观不能自己使用因为BasicLookAndFeel是一个抽象类。有三个继承自BasicLookAndFeel的可插拔式外观实现:
同时还有一个模仿苹果用户接口的MacLookAndFeel,但是没有包含在Java2中,必须单独下载。多路外观javax.swing.plaf.multi.MultiLookAndFeel扩展了javax.swing.plaf中的所有抽象类。它运行同时使用多种外观的组合,且有意但并不仅限于和访问外观一起使用。每个多路UI委托的任务是管理每个它们的子UI委托。
每个外观包中都包含了一个继承自抽象类javax.swing.LookAndFeel:BasicLookAndFeel, MetalLookAndFeel, WindowsLookAndFeel等的类。这是访问每个外观包的中心点。当改变当前外观时,你会用到它们。同时UIManager类(用于管理安装的外观)使用它们来访问当前外观UIDefaults表(其中包含了用于每个Swing组件相应外观的UI委托类名称)。
要想改变应用的当前外观,你只需要简单调用UIManager的setLookAndFeel()方法,并将要使用的外观全名传递给该方法即可。可以使用列表A中的代码在运行时完成该任务。
当外观改变时,Swing实用工具updateComponentTreeUI()通知所有特定组件的孩子,并通知它们丢弃原来的UI委托用来换取一个不同的特定类型委托。
创建一个PLAF
在创建一个PLAF之前,你必须在Java中创建外观的两种设计方法中做出决定。其中一种方法是通过扩展javax.swing.plaf包来创建外观,另一种方法是通过扩展已经存在的外观包,通常是javax.swing.plaf.basic来实现。
如果要创建一个用于PC的外观,我们不推荐使用扩展来自javax.swing.plaf包中的外观的方法。这是因为javax.swing.basic包中已经扩展了几乎整个的javax.swing.plaf包供我们使用。这样我们可以通过挑选外观需要的东西来进行定制而不需要扩展和实现任何东西。
javax.swing.plaf包的实现遵循的一个基本原则是使得定制一个外观尽可能的简单。这个原则是LookAndFeel类中组件,颜色和UI类的中心。
javax.swing.plaf.basic包以我们希望的方式描绘轻量级Swing组件。如果你是为一台设备而不是计算机屏幕创建一个外观,那么最好的方法是从零开始扩展javax.swing.plaf包。
Peter V.Mikhalenko是 Sun公司认证专业技术人员,现为Deutsche银行业务顾问。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者