今天我们讨论的话题可能感觉上理论性较强,所以就比较枯燥,不过你必须静下心来,如果你不能完全理解也不要灰心,在以后的实践中你会渐渐的理解这些东西。
首先讨论一下java中显示图形的原理:
首先java采用了“模型-视图-控制器”(Model-View-Controller,MVC)的设计模式,
这涉及到了关于设计模式的问题,在这里我就部队设计模式进行扩展了,想必大家都知道那本经典书籍《Design Pattern: Elements of Reusable Object-Oriented Software》
如果你对这些还不是很了解,可以通过以后的应用慢慢体会,当然如果你有足够的时间,我还强烈建议你好好的研究一下设计模式。
在MVC模式中实现了三个各自独立的类:
模型(Model):保存内容
视图(View):显示内容
控制器(Controller):用于控制用户的输入
从这个模式中可以看出:“模型”并没由用户界面(用户接口),只是负责保存内容;“视图”只是模型的显示,所以一个模型可以有多个视图;“控制器”负责用户的输入事件,比如鼠标的单击,然后决定改变视图或者模型。
但是使用中,因为视图和控制器之间有依存关系,控制器的操作和视图的实现有着很强的依赖关系,所以,视图和控制器一般有一个复合对象表示,它使用一个控制器对应着一个视图。这样,MVC就变成了文档/视图结构,Sun称之为“分离模型结构(Separable Model architecture)”。Swing组件为可插入外观和感觉提供的工作方式是让一个组件的可视外观和界面对于用户就是一个称为UI代表的独立对象,这就是MVC模式中的视图+控制器部分。
然后再讨论一下组件的概念:
窗口中的一些用户界面元素被java称之为组件,例如按钮、复选框和文本框等。那么,它是如何显示到窗口内的呢?
首先,所有java.awt.Component类是一切组件的老祖先,它定义了所有组件的基本属
性和方法。
然后,我们要提到的是一个Container(容器)的概念,它是Component的子类,其对
象可以包含其它组件。JFrame是一个Frame的子类,它和Compoment的关系可以用下图表示
根据容器的特性我们在设计用户界面的过程其实是朝容器中添加组件。这可能是你无法理解的,不过你看了下面关于窗口的介绍你就会了解着一点。
一个简单的JFrame帧(窗口)的结勾其实是十分复杂的,为了直观的表达我还是用一个图来显示
其中contentPane对象对我们现在来说最重要的,因为我们一般在这里添加GUI组件,文本的显示和图形的绘制也是在这里完成。还有菜单也在应在这里完成。(至于其它几个对象我们会在以后的使用过程中讨论)
好了今天就到这里了,明天我将向大家介绍向大家介绍如何向窗口区中添加GUI组件。
期待您的继续支持kwaif@sina.com