logo资料库

java swing 入门教程.doc

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
swing 入门教程 swing 简介(2009-04-20 23:52:40) UI 组件简介 在开始学习 Swing 之前,必须回答针对真正初学者的一个问题:什么是 UI?初学者的答 案是“用户界面”。但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这 个定义更高级的定义。 所以,我再次提出这个问题:什么是 UI?您可能把它定义成您按下的按钮、打字的地址栏 、 打开和关闭的窗口,等等,这些都是 UI 的元素,但是除了在屏幕上看到的这些之外,还有 更多都是 UI 元素。比如鼠标、键盘、音量、屏幕颜色、使用的字体,以及一个对象相对于 另一个对象的位置,这些都包含在 UI 之中。实际上,在计算机和用户的交互之中扮演角色 的任何对象都是 UI 的组成部分。这看起来足够简单,但是您应当惊讶的是,有许多人和大 型公司已经为它努力了很多年。实际上,现在有的大学专业的惟一课程就是研究这种交互。 Swing 的角色 Swing 是 Java 平台的 UI —— 它充当处理用户和计算机之间全部交互的软件。它实际上充 当用户和计算机内部之间的中间人。Swing 到底是如何做这项工作的呢?它提供了处理前 面一节中描述的 UI 各方面内容的机制:  键盘:Swing 提供了捕捉用户输入的方法。  颜色:Swing 提供改变在屏幕上看到的颜色的方法。  打字的地址栏:Swing 提供了文本组件,处理所有普通任务。
 音量:Swing 不太擅长。 无论如何,Swing 为您提供了创建自己的 UI 所需要的所有工具 MVC Swing 甚至走得更远一步,在基本的 UI 原则之上又放上了一个公共的设计模式。这个设 计模式叫做模型-视图-控制器(Model-View-Controller,MVC),它试图“把角色分开”。MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。 有点迷惑?如果我为这个设计模式提供一个现实世界的非技术性示例,它就比较容易了。请 想像一次时装秀。把秀场当成 UI,假设服装就是数据,是展示给用户的计算机信息。现在, 假设这次时装秀中只有一个人。这个人设计服装、修改服装、同时还在 T 台上展示这些服 装。这看起来可不是一个构造良好的或有效率的设计。 现在,假设同样的时装秀采用 MVC 设计模式。这次不是一个人做每件事,而是将角色分 开。时装模特(不要与 MVC 缩写中的模型混淆)展示服装。他们扮演的角色是视图。他 们知道展示服装(数据的)适当方法,但是根本不知道如何创建或设计服装。另一方面,时 装设计师充当控制器。时装设计师对于如何在 T 台上走秀没有概念,但他能创建和操纵服 装。时装模特和设计师都能独立地处理服装,但都有自己的专业领域。 这就是 MVC 设计模式背后的概念:让 UI 的每个方面处理它擅长的工作。如果您仍然不 明白,那么教程后面的示例有望消除您的迷惑 —— 但是在您继续进行的时候,请记住基本 的原则:用可视组件显示数据,同时让其他类操纵数据。
JComponent Swing 的整个可视组件库的基础构造块是 JComponent。它是所有组件的父类。它是一个 抽象类,所以不能创建 JComponent,但是作为类层次结构的结果,从字面意义来说它包 含了数百个函数,Swing 中的每个组件都可以使用这些函数。显然,有些概念要比其他概 念重要,所以对于本教程,需要学习的重要的东西是:  JComponent 不仅是 Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中 级 Swing”教程中)。  它为所有组件提供了绘制的基础架构 —— 一些方便进行组件定制的东西(同样,在“中 级 Swing”中,有关于这个主题的更多信息)。  它知道如何处理所有的键盘按键。所以类只需要侦听特定的键。  它包含 add() 方法,可以添加其他 JComponent。换种方式来看,可以把任意 Swing 组 件添加到其他任何 Swing 组件,从而构造嵌套组件(例如,JPanel 包含 JButton,甚 至包含一些古怪的组合,例如 JMenu 包含 JButton)。 简单的 swing 小部件 JLabel
Swing 库中最基础的组件是 JLabel。它所做的正是您所期望的:呆在那儿,看起来很漂亮, 描述其他组件。下图显示了的 JLabel 实际应用: JLabel 不太吸引人,但是仍然有用。实际上,在整个应用程序中,不仅把 JLabel 用作文本描述, 还将它用作图片描述。每当在 Swing 应用程序中看到图片的时候,它就有可能是 JLabel。 JLabel 对于 Swing 初学者来说没有许多意料之外的方法。基本的方法包括设置文本、图 片、对齐以及标签描述的其他组件:       get/setText(): 获取/设置标签的文本。 get/seticon(): 获取/设置标签的图片。 get/setHorizontalAlignment(): 获取/设置文本的水平位置。 get/setVerticalAlignment(): 获取/设置文本的垂直位置。 get/setDisplayedMnemonic(): 获取/设置标签的访问键(下划线文字)。 get/setLableFor(): 获取/设置这个标签附着的组件,所以当用户按下 Alt+访问键时,焦 点转移到指定的组件。 JButton Swing 中的基本动作组件 JButton,是与每个窗口中都能看到的 OK 和 Cancel 一样的按 钮;这些按钮所做的正是您希望它们做的工作 —— 在单击它们之后,将发生一些事情。到 底会发生什么呢?您必须定义发生的内容(请参阅 事件,以获得更多信息)。一个 JButton 实例看起来如下所示:
JButton 用来改变 JButton 属性的方法与 JLabel 的方法类似(您可能发现,在大多数 Swing 组 件中,这些属性都类似)。它们控制文本、图片和方向:      get/setText(): 获取/设置标签的文本。 get/seticon(): 获取/设置标签的图片。 get/setHorizontalAlignment(): 获取/设置文本的水平位置。 get/setVerticalAlignment(): 获取/设置文本的垂直位置。 get/setDisplayedMnemonic(): 获取/设置访问键(下划线字符),与 Alt 按钮组合时, 造成按钮单击。 除了这些方法,我还要介绍 JButton 包含的另外一组方法。这些方法利用了按钮的所有不 同状态。状态是对组件进行描述的一个属性,通常采用真/假设置。在 JButton 中,可以包 含以下可能状态:活动/不活动、选中/没选中、鼠标经过/鼠标离开、按下/没按下,等等。 另外,可以组合这些状态,例如按钮可以在鼠标经过的同时被选中。现在您可能会问自己用 这些状态到底要做什么。作为示例,请看看您的浏览器上的后退按钮。请注意在鼠标经过它 的时候,图片是如何变化的,在按下该按钮时,图片又是如何变化的。这个按钮利用了不同 的状态。每个状态采用不同的图片,这是提示用户交互正在进行的一种普遍并且有效的方式。 JButton 上的状态方法是:
       get/setDisabledIcon() get/setDisableSelectedIcon() get/setIcon() get/setPressedIcon() get/setRolloverIcon() get/setRolloverSelectedIcon() get/setSelectedIcon() JTextField Swing 中的基本文本组件是 JTextField,它允许用户在 UI 中输入文本。我肯定您熟悉文 本字段:要掌握本教程,则必须使用一个文本字段输入用户名和口令。您输入文本、删除文 本、选中文本、把文字四处移动 —— Swing 替您负责所有这些工作。作为 UI 开发人员, 利用 JJTextField 时,实际上并不需要做什么。 在任何情况下,这是 JTextField 实际使用时看起来的样子: JTextField 在处理 JTextField 时,只需要关注一个方法 —— 这应当是很明显的,这个方法就是设置文 本的方法: get/setText(),用于获取/设置 JTextField 中的文本。 JFrame 迄今为止,我介绍了 Swing 的三个基本构造块:标签、按钮和文本字段;但是现在需要个 地方放它们,希望用户知道如何处理它们。JFrame 类就是做这个的——它是一个容器,允
许您把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。它有许多其他好处, 但是我认为先看看它的图片最简单: JFrame JFrame 实际上不仅仅让您把组件放入其中并呈现给用户。比起它表面上的简单性,它实际 上是 Swing 包中最复杂的组件。为了最大程度地简化组件,在独立于操作系统的 Swing 组 件与实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。JFrame 在本机操作系 统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最 小化/最大化、改变大小、移动。但是对于本教程的目标来说,把 JFrame 当作放置组件的 调色板就足够了。可以在 JFrame 上调用的一些修改属性的方法是:       get/setTitle(): 获取/设置帧的标题。 get/setState(): 获取/设置帧的最小化、最大化等状态。 is/setVisible(): 获取/设置帧的可视状态,换句话说,是否在屏幕上显示。 get/setLocation(): 获取/设置帧在屏幕上应当出现的位置。 get/setsize(): 获取/设置帧的大小。 add(): 将组件添加到帧中。 简单应用程序
就像所有的“x 入门”教程一样,本教程也包含必不可少的 HelloWorld 演示。但这个示例不 仅对观察 Swing 应用程序如何工作有用,还对确保设置正确很有用。一旦使这个简单的应 用程序能够成功运行,那么之后的每个示例也将能够运行。下图显示了完成后的示例: HelloWorld 示例 第一步是创建类。将组件放在 JFrame 上的 Swing 应用程序需要继承 JFrame 类,如下 所示: public class HelloWorld extends JFrame 这样做之后,就得到上面描述的所有 JFrame 属性,最重要的是操作系统对窗口的本机支 持。下一步是把组件放在屏幕上。在这个示例中,使用了一个 null 布局。在教程的后面部 分,您将学到更多关于布局和布局管理器的内容。但对于这个示例,可以用数字表示 JFrame 上的像素位置: public HelloWorld() { super(); this.setSize(300, 200); this.getContentPane().setLayout(null); this.add(getJLabel(), null); this.add(getJTextField(), null); this.add(getJButton(), null);
分享到:
收藏