java swing 应用编程接口提供了可插拔式外观风格(plaf)的特性,它允许swing 图形用户接口(gui)小应用根据编程人员定制的外观风格设置来改变界面外观风格。
几乎所有现代用户接口框架都结合了视图和控制,无论它们是基于smalltalk、c++或java。
swing将每个组件的视图和控制封装到一个称为ui委托的对象中。
因此,swing的体系结构被称为模型委托结构而不是模式-视图-控制器结构。理想情况下,模型和ui委托直接的通讯是间接的,允许多个模型与一个ui委托相连,反之亦然。
ui委托
每个ui委托源自一个名为componentui的抽象类。componentui的方法描述了一个ui委托和使用它的组件之间进行通讯的基本原理。
注意的是每个方法都将jcomponent作为一个参数。componentui有很多方法,这里只给出几个最重要的:
·static componentui createui(jcomponent c):该方法通常用来返回ui委托的一个共享实例,该ui委托通过定义componentui子类本身而定义。这个共享实例用于相同类型的组件之间的共享(例如,所有使用金属外观的jbuttons共享同样的静态ui委托实例,默认情况下,该委托实例在javax.swing.plaf.metal.metalbuttonui中定义。
·installui(jcomponent c):该方法在特定的组件上安装componentui。通常会给组件和它的模型添加一个监听器,当状态发生改变时来通知ui委托进行视图的更新。
·update (graphics g, jcomponent c):如果组件是不透明的,那么应该描绘它的背景并调用paint(graphics g,jcomponent c)方法。
·paint (graphics g, jcomponent c):为了能够正确地描绘,该方法要从组件收集所有需要的信息以及可能的模型。
为了增强特定ui委托的使用,我们可以调用一个组件的setui()方法,如下所示:
jbutton m_button = new jbutton();
m_button.setui((mybuttonui)mybuttonui.createui(m_button));
jcomponent类中定义了用于分配ui委托的方法,因为方法声明中不包含特定组件代码。然而,对数据模型而言这是不可能的,因为不存在所有模型可以追溯到的基接口(例如,不存在像swing模型中的componentui此类的基类)。为此,分配模型的方法在jcomponent的子类中定义。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
如何看待微软收购Xamarin?
今年三月微软正式收购了Xamarin,你认为微软收购Xamarin对其有什么作用?
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
Google App Engine for Java 对于目前中国需要学习吗?