通过Java Swing看透MVC设计模(二)

原创 2004年08月24日 20:54:00
ButtonModel类

ButtonModel维护着三种类型的状态信息:是否被按下(pressed),是否“武装上了”(armed),是否被选择(selected)。它们都是boolean类型的值。

一个按钮被按下(pressed)是指当鼠标在按钮上面的时候,按下鼠标但是还没有松开鼠标按钮的状态,及时用户此时把鼠标拖拽到按钮的外面也没有改变这种状态。

一个按钮是否“武装了”(armed)是指按钮被按下,并且鼠标还在按钮的上面。

一些按钮还可能被选择(selected),这种状态通过重复的点击按钮取得true或者false的值。

下面的代码是状态pressed的一个缺省的实现。状态armed以及selected实现的代码与之类似。ButtonModel类应该被继承,这样可以覆盖缺省的状态定义,实现有个性的按钮。



按钮的模型button model还负责通知其他对象(事件监听器)它们所感兴趣的事件。从下面的代买中我们可以看出当按钮的转台发生改变的时候就会发出一个ChangeEvent。下面就是代码:



在进入下一节之前,你应该多花一些时间来仔细阅读一下ButtonModel类的源代码。

ButtonUI类

按钮的view/controller是负责构建表示层的。缺省情况下它仅仅是用背景色画一个矩形而已,他们的子类继承了他们并且覆盖了绘制的方法,使得按钮可以有许多不同的表现,例如MOTIF,Windows 95,Java样式等等。



ButtonUI类并不自己处理AWT事件,他们会使用一个定制的事件监听器把低级的AWT事件翻译为高级的Button模型期望的语义事件。下面就是安装/卸载事件监听器的代码。



View/Controller实际上就是一些方法。他们不维护任何自己的状态信息。因此,许多按钮的实例可以共享一个ButtonUI实例。ButtonUI是通过在方面的参数列表里面加上按钮的引用来区分各个不同的按钮。

同样,希望你能多花一些时间来看看ButtonUI类,然后咱们进入下一节。

ButtonUIListener类

ButtonUIListener类可以帮助Button类去转变鼠标或者键盘的输入为对按钮模型的操作。这个监听器类实现了:MouseListener,MouseMotionListener,ChangeListener接口,并且处理一下事件:



总结

我希望你能按照上面讲述的方法去做。如果不能,那么所有的努力都将白费。这个例子以及Swing用户界面组件的好处在于你不用去花时间去弄明白他们底层是如何设计实现的就可以很方便的使用他们了。他们都提供了缺省的model以及view/controller,然后,当你自己做组件的时候,你会发现上面的思想的强大之处。

通过Java Swing看透MVC设计模(一)

 一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它...
  • hei55
  • hei55
  • 2006年08月25日 00:13
  • 710

通过Java Swing看透MVC设计模(一)

一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由...
  • chensheng913
  • chensheng913
  • 2004年08月24日 20:52
  • 6438

看透springMvc源代码分析与实现这本书中第八章实例总结(controller和View)

(如何搭建详见《看透springMvc源代码分析与实现》这本书中第八章)以及不同的配置方式解决Configuration problem: Cannot locate BeanDefinitionPa...
  • chang3247
  • chang3247
  • 2017年02月20日 15:15
  • 500

通过 Java Swing 看透 MVC 设计模式

一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由...
  • juststone
  • juststone
  • 2005年03月14日 20:27
  • 817

通过 Java Swing 看透 MVC 设计模式

一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由...
  • njchenyi
  • njchenyi
  • 2005年08月01日 16:20
  • 1102

Swing程序最佳架构设计—以业务对象为中心的MVC模式

         Swing程序最佳架构设计—以业务对象为中心的MVC模式  前言:我打算写一系列关于Swing程序开发的文章。这是由于最近我在做一个Swing产品的开发。长期做JavaEE程序,让我...
  • shendl
  • shendl
  • 2007年02月05日 23:07
  • 6133

读<看透Spring MVC 源代码分析与实践>Tomcat笔记

Servlet->GenericServlet->HttpServlet Tomcat整体结构: Server    Service 1    Service 2    ...    Servi...
  • guolong1983811
  • guolong1983811
  • 2016年01月06日 17:20
  • 1971

通过JAVA SWING看透MVC设计模式

通过JAVA SWING看透MVC设计模式        一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这...
  • vipcowrie
  • vipcowrie
  • 2003年06月13日 16:51
  • 1620

通过Java Swing看透MVC设计模式

一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由...
  • success_dream
  • success_dream
  • 2007年10月05日 16:59
  • 673

通过Java Swing看透MVC设计模式

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";...
  • java169
  • java169
  • 2008年05月24日 23:22
  • 245
收藏助手
不良信息举报
您举报文章:通过Java Swing看透MVC设计模(二)
举报原因:
原因补充:

(最多只允许输入30个字)