通过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)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就...
  • CTO_51
  • CTO_51
  • 2013年06月01日 19:48
  • 917

通过Java Swing看透MVC设计模式

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

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

Servlet->GenericServlet->HttpServlet Tomcat整体结构: Server    Service 1    Service 2    ... ...
  • achuo
  • achuo
  • 2016年01月11日 14:21
  • 1169

2016书单总结--看透SpringMvc源代码分析与实践-概述

2016书单总结–看透SpringMvc源代码分析与实践-概述主要从Servlet、Tomcat、SpringMvc启动、SpringMvc组件几个方面进行阐述Servlet相关知识点(3个主要类) ...
  • undergrowth
  • undergrowth
  • 2017年01月24日 00:09
  • 1209

java之MVC设计模式浅析

Java之MVC设计模式使用 一、设计模式简介: 在学习MVC设计模式之前,先简单说一下什么是代码的设计模式。 官方的说法是:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经...
  • jzc251105671l
  • jzc251105671l
  • 2017年07月13日 22:03
  • 50

看透 Spring MVC 源代码分析与实践 —— Spring MVC 组件分析

由于星期一接到面试通知,和面试官约好了星期四面试,所以这几天没更新完这系列的文章,面完试后立马就把这个解决掉。通过这次面试,也让我懂得了很多,知道了自己的一些不足之处,后面还要继续下功夫好好的深入复习...
  • zbl1146556298
  • zbl1146556298
  • 2017年11月19日 12:05
  • 37

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

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

JAVA之Swing设计

import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt...
  • xinwen1995
  • xinwen1995
  • 2016年07月18日 22:54
  • 348

MVC设计模式 的概念

MVC设计模式 的概念打从笔者在csdn搜索“MVC”,结果出现了标题主旨不同的几种有关“MVC”的博文之后,笔者就知道了MVC会有几个重定义。在笔者阅览过这些博文之后,可以总结出:在我们程序员所在领...
  • yasukusury
  • yasukusury
  • 2017年03月18日 13:46
  • 112

模2运算的原理 模2加法,模2减法,模2乘法,模2除法

模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算...
  • ywb201314
  • ywb201314
  • 2016年08月05日 16:16
  • 1073
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过Java Swing看透MVC设计模(二)
举报原因:
原因补充:

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