Java图形用户界面-Swing的介绍

图形用户接口( GUI )库最初的设计目的是让程序员构建一个通用的 GUI ,使其在所有的平台上都能够正常的显示。但是比较遗憾的是 AWT 产生的是在各系统看来都同样欠佳的图形用户接口, JAVA1.2 为老的 java1.0 AWT 添加了 java 基础类( JFC ),这是一个被称为 “Swing” GUI 的一部分。 Swing 是第二代 GUI 开发工具集, AWT 采用了与特定平台相关的实现,而绝大部分 Swing 组件却不是。 Swing 是构筑在 AWT 上层的一组 GUI 组件的集合,为了保证可移植性,它完全用 Java 语言编写,与 AWT 相比, Swing 提供了更完整的组件,引入了许多新的特性和能力。 Swing 提供了更多的组件库,如: JTable JTree Jcombox Swing 也增强了 AWT 中组件的功能。正是因为 Swing 具备了如此多的优势所以我们以后在开发中都使用 Swing JComponent 类是 Swing 组件的基类,而 JComponent 继承自 Container 类,因此,所有的 Swing 组件都是 AWT 的容器。 Swing 采用了 MVC 设计模式。

设计模式: 当你解决一个问题时你不需要从头做起,取而代之的是,你应该参考过去的经验,或者向专家咨询意见,设计模式是一种方法,该方法以一种结构化的形式提供专家意见。设计模式的灵感来自于建筑学设计模式。设计模式已经成为文化的一部分,当你谈论 MVC 观察者模式时 全世界的程序员都明白你的意思,因而,模式已经成为讨论设计问题的有效方法。 Swing 采用了 mvc 模式, awt 事件模型采用了 观察者 模式

MVC -【模型-视图-控制器】模式: 该模式同其他许多设计模式一样,都遵循面向对象的设计中的一个基本原则:不让对象具有太多的功能,如对于按钮来说不要让一个按钮类完成所有的事情,替代的方法就是让一个对象负责组件的观感,而另一个对象负责存储内容, mvc 模式实现三个独立的类:

模型-存储内容;   视图-显示内容;   控制器-处理用户输入

mvc 模式明确规定了三个对象如何进行交互。模型存储内容,它没有任何用户界面。对于一个按钮来说,内容非常简单,它只是一组标志,用来说明按钮是否按下,是否启用等。对于一个文本框来说内容稍稍复杂,它是容纳当前文本的一个字符串对象。这个内容和视图的内容并不一致--如果内容长度大于文本框的显示长度,那么用户只能看到的就是只有文本框显示的那一部分。

mvc 模式总结:模型存储完整内容,视图给出了内容的可视化表示【完整或者不完整】,控制器负责处理用户输入事件,如鼠标点击和键盘事件等,然后它决定是否把这些事件转化成对模型或视图的改变。控制器作用举例:如果用户在一个文本框中按下了一个字符键,那么控制器就会调用模型中的 插入字符 命令,然后模型告诉视图进行更新,而视图永远不会知道文本为什么改变了,但是如果用户按下了一个光标键,那么控制器会通知视图进行卷屏滚动。卷动视图对实际文本不会有任何的影响,因此模型永远不会知道该事件的发生。 Mvc 模式的一个优点是 : 一个模型可以有多个视图,其中每个视图可以显示完整内容的不同部分或不同方面。如果作为程序员来使用 Swing ,则不需要考虑 mvc 的体系结构,每个用户界面元素都有一个包装类(如 Jbutton JTextField ),来保存模型和视图。

JFrame JFrame Frame 的功能相当,但远比 Frame 复杂。 JFrame 的结构相当复杂,在 JFrame 中安排了四个窗格,其中根窗格( JRoot )、布局窗格( JLayeredPane )和透明窗格( Glass pane )和我们没有什么关系;他们用来组织菜单条和内容窗格,以及实现观感的。 Swing 程序员最关心的是内容窗格( content pane ),当设计一个框架时,组件会被添加到内容窗格中,如下代码所示:

Container cp=f.getContentPane();

Component c=…

cp.add(c);

很明显上面的代码和我们在前面学的 AWT 的编程方式不一样,不能直接用 add 方法添加组件到 JFrame 上。 JFrame ContentPane 的默认布局管理器为 BorderLayout

JPanel 组件为中间容器,用于将较小的轻量级组件组合在一起,这意味着它与内容窗格相似。 JPanel 默认为 FlowLayout 布局。

JMenuBar 只能通过 JFrame JWindow JInternalFrame 的根窗格来添加。 JMenuBar 不能直接添加到窗体中。它由多个 Jmenu 组成,每个 JMenu JMenuBar 中都表示为字符串。 JMenuBar 需要两个附件类来辅助其工作。它们是 SingleSelectionModel 类和 LookAndFeel 类。 SingleSelectionModel 类跟踪当前选定的菜单, LookAndFeel 类负责绘制菜单栏以及在其中发生的事件作出响应。

       JMenu有两个用途,显示在JMenuBar下时,它以文本字符串的形式显示;用户单击字符串时它以弹出式菜单形式显示。可包括标准菜单项,如JMenuItemJCheckBoxMenuItemJRadioButtonMenuItemJeeparator等。JMenu需要两个附件类来辅助其工作。它们是JPopupMenu类和LookAndFeel类。JMenu类将创建JPopupMenu类,并从当前可插入的观感中获得自己的观感,用户单击JMenuLookAndFeel类负责绘制菜单栏中的菜单以及对在其中发生的所有事情作出响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值