java_swing_入门教程 .pdf

上传人:C****o 文档编号:39724465 上传时间:2022-09-07 格式:PDF 页数:40 大小:472.10KB
返回 下载 相关 举报
java_swing_入门教程 .pdf_第1页
第1页 / 共40页
java_swing_入门教程 .pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《java_swing_入门教程 .pdf》由会员分享,可在线阅读,更多相关《java_swing_入门教程 .pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、swing 入门教程swing 简介(2009-04-20 23:52:40)UI 组件简介在开始学习Swing 之前,必须回答针对真正初学者的一个问题:什么是UI?初学者的答案是“用户界面”。但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这个定义更高级的定义。所以,我再次提出这个问题:什么是UI?您可能把它定义成您按下的按钮、打字的地址栏、打开和关闭的窗口,等等,这些都是UI 的元素,但是除了在屏幕上看到的这些之 外,还有更多 都是 UI 元素。比 如鼠 标、键盘、音量、屏幕 颜色、使用的字 体,以 及一个对 象相对于另一个对 象的位置,这些都 包含 在 UI 之中。实际 上

2、,在计算机 和用户的 交互之中扮演角色的任何 对象都是UI 的组成部分。这看 起来足够 简单,但是您 应当惊讶 的是,有许多人 和大型公司已经 为它 努力 了很多年。实际 上,现在有的大学专业的惟一课程就是研究 这种交互。Swing的角色Swing 是 Java 平台 的 UI 它充当处理 用户和 计算机 之间全部交互 的软件。它实际上充当用户和 计算机内部 之间的中间人。Swing 到底 是如何做 这项工作 的呢?它提 供了处理 前面一 节中描述 的 UI 各方 面内容 的 机制:?键盘:Swing 提供了捕捉用户 输入的方法。?颜色:Swing 提供改变在屏幕上看 到的颜色的方法。?打字的

3、地址栏:Swing 提供了文本组件,处理所有普通任务。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 40 页 -?音量:Swing 不太擅长。无论 如何,Swing 为您提 供了创建自己 的 UI 所需要的所 有工 具MVCSwing 甚至走得 更远一步,在 基 本的 UI 原则 之上 又放上了一个 公共的设计模式。这个 设计模式叫 做模型-视图-控 制器(Model-View-Controller,MVC),它试图“把角色分 开”。MVC 让负责显示 的代码、处理 数据 的代码、对 交互 进行响 应并驱动变化 的代码彼此 分离。有点迷惑?如果我为这个 设计模式 提供一个 现实

4、 世界的 非技术性示例,它就比较容易了。请想像 一次 时装秀。把 秀场 当成 UI,假设服装 就 是数据,是展示给 用户的 计算机 信息。现在,假设 这次 时装秀 中 只有一个 人。这个 人设计服装、修改服装、同时还在 T 台上展示这些 服装。这看 起来 可不是一个 构造良好 的或有效率 的设计。现在,假设同样 的 时装秀 采用 MVC 设计模式。这次不是一个人做每件事,而是将角色分开。时装模 特(不要 与 MVC 缩写 中的模型混淆)展示服装。他们扮演 的角色 是视图。他们知道 展示服装(数据 的)适当方 法,但是 根本不 知道如何 创建或设 计服装。另一方面,时装设 计师充当 控制 器。时

5、装设 计师 对于如何 在 T 台上走秀 没有概念,但 他能创建 和操纵 服装。时装模 特和设 计师都能 独立 地 处理 服装,但都 有自己的专业 领域。这就 是 MVC 设 计模式 背后 的概念:让 UI 的每 个方面处理 它擅长的工作。如果您仍然 不明白,那么教程 后 面的 示例 有望消 除您的 迷惑 但是在您 继续 进行 的时候,请记住基本的原则:用可 视组件 显示数据,同时让 其他类操纵 数据。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 40 页 -JComponentSwing 的整个可 视组件 库的基础 构造 块是 JComponent。它是所 有组件 的父类。它是

6、一个抽象 类,所以不能 创建 JComponent,但是 作为 类层次结构的结果,从字面意义来说它包含了 数百个函数,Swing 中的每 个组件 都可以 使 用这些 函数。显然,有些概念 要比其他概念重 要,所以对 于 本教程,需要学习的重要的 东西 是:?JComponent 不仅是 Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中级 Swing”教程中)。?它为所 有组件 提供了绘制的基础架 构 一些方便进行组件定制的东西(同样,在“中级 Swing”中,有关于这个主题的更 多信息)。?它知道 如何处理 所有的键盘按键。所以 类只需要侦听特定的键。?它包含 add()方法,

7、可以添加其他JComponent。换种方式来看,可以把任意 Swing 组件添加 到其他任何 Swing 组件,从而构造 嵌套组件(例如,JPanel 包含 JButton,甚至包含 一些古怪的组合,例如 JMenu 包含 JButton)。简单 的 swing 小部件JLabel名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 40 页 -Swing 库中最基 础的组件 是 JLabel。它所 做的正是您所 期望 的:呆在那儿,看起来很 漂亮,描述 其他 组件。下 图显示 了的JLabel 实际应 用:JLabel不太 吸引 人,但是 仍然 有用。实际 上,在 整个应用程 序中,

8、不 仅把 JLabel 用作文本描述,还将 它用 作图片描述。每当在 Swing 应 用程 序中看到图片的时候,它就有 可能是JLabel。JLabel 对于 Swing 初学者 来说没 有许多 意料 之外的方法。基本的 方法包括设置文本、图片、对 齐以及标签 描述 的其他 组件:?get/setText():获取/设置标签的文本。?get/seticon():获取/设置标签的图片。?get/setHorizontalAlignment():获取/设置 文本的水平位置。?get/setVerticalAlignment():获取/设置文本的垂直位置。?get/setDisplayedMnemo

9、nic():获取/设置标签的访问键(下划线文字)。?get/setLableFor():获取/设置这个标 签附着 的组件,所以当用户按下Alt+访问键时,焦点转移 到指定的组件。JButtonSwing 中的基本 动作组件JButton,是与每 个窗口 中都能看 到的 OK 和 Cancel 一样的按钮;这些按钮所 做 的正是您 希望它们 做的工作 在单击它们之 后,将发生一些 事情。到底会发生 什么 呢?您必须定义 发生 的内容(请 参阅事件,以获得更多信息)。一个JButton 实例 看起来如 下所 示:名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 40 页 -JButto

10、n用来 改变 JButton 属性的方 法与 JLabel 的方 法类似(您可能 发现,在大多 数 Swing 组件中,这些 属性都 类似)。它们 控 制文本、图片和方向:?get/setText():获取/设置标签的文本。?get/seticon():获取/设置标签的图片。?get/setHorizontalAlignment():获取/设置 文本的水平位置。?get/setVerticalAlignment():获取/设置文本的垂直位置。?get/setDisplayedMnemonic():获取/设置访问键(下划线字符),与 Alt 按钮组合时,造成按钮 单击。除了这些 方法,我 还要介

11、 绍 JButton 包含 的 另外 一组方 法。这些 方法利用了按钮的所 有不同状态。状态 是对 组件 进行 描述 的一个 属性,通常采用真/假设 置。在 JButton 中,可以 包含以下可能 状态:活动/不活动、选中/没选 中、鼠标经过/鼠标离开、按下/没按下,等等。另外,可以 组合这些 状态,例如按钮可以在 鼠标经过的同时 被选中。现在您可能 会问自己 用这些 状态 到底 要做 什么。作为示例,请看看您的 浏览器上的 后退按钮。请注意在鼠标经过它的时 候,图片是如何 变化 的,在按下 该 按钮 时,图片又是如何 变化的。这个按钮 利用了不 同的状态。每个 状态 采用不 同 的图片,这是

12、提 示用户 交互 正在 进行 的一 种普遍并且有效的方式。JButton 上的 状态 方 法是:名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 40 页 -?get/setDisabledIcon()?get/setDisableSelectedIcon()?get/setIcon()?get/setPressedIcon()?get/setRolloverIcon()?get/setRolloverSelectedIcon()?get/setSelectedIcon()JTextFieldSwing 中的基本 文本组件 是 JTextField,它 允 许用户在UI 中输入文

13、本。我 肯定您熟悉 文本字 段:要掌握 本教程,则必须 使用一个 文本字 段输入 用户 名和口 令。您输入文 本、删除文本、选中文本、把 文字四处移动 Swing 替您 负责所有这些 工作。作为 UI 开发人员,利用 JJTextField 时,实际 上并不需要 做什么。在任何 情况 下,这是JTextField 实际使 用 时看起来的样子:JTextField在处理JTextField 时,只需要关 注一个 方 法 这应当 是很明显的,这个 方法就是设置文本的 方法:get/setText(),用 于获取/设置 JTextField 中的文本。JFrame迄今 为止,我介 绍了 Swing

14、的三个基本构造 块:标签、按钮和 文本字 段;但是 现在需要个地方 放它们,希望 用户 知道 如何处理 它们。JFrame 类就是做这个的 它是一个 容器,允名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 40 页 -许您把 其他 组件 添加 到它里面,把它们 组织起来,并把它们 呈现给用户。它有许多 其他好处,但是我 认为先看看它的 图片最 简单:JFrameJFrame 实际 上不 仅仅 让您把 组件 放入 其中并呈现给用户。比起它表面上的简 单性,它实际上是Swing 包中 最复杂 的组件。为了 最大程度 地简 化组件,在独立于操作系统的 Swing 组件与 实际 运行这些

15、 组件 的操作系统 之间,JFrame 起着桥梁 的作用。JFrame 在本 机操作系统中 是以窗口的 形 式注册 的,这么 做之 后,就可以 得到许多 熟悉的操作系统 窗口的 特性:最小化/最大化、改变 大小、移动。但是对 于本教程的目标 来说,把JFrame 当作 放置组件 的调色 板就足够 了。可以在JFrame 上调用的一些 修改 属性的方法是:?get/setTitle():获取/设置帧的标题。?get/setState():获取/设置帧的最小化、最大化等状态。?is/setVisible():获取/设置帧的可 视状态,换句话说,是否在屏幕上 显示。?get/setLocation(

16、):获取/设置帧在屏幕上 应当出现的位置。?get/setsize():获取/设置帧的大小。?add():将组件 添加到帧中。简单应用程序名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 40 页 -就像 所有的“x 入门”教程一 样,本教程 也 包含 必不可 少的 HelloWorld 演示。但这个 示例 不仅对 观察 Swing 应用程 序如何工作有 用,还对确保设置正确很有 用。一 旦使这个简 单的应用程 序能够成功运 行,那么之 后的 每个示例 也将能够运行。下 图显示 了完成后的示例:HelloWorld示例第一 步是创建 类。将组件 放在 JFrame 上的Swing

17、应用程 序需要 继承 JFrame 类,如下所示:public class HelloWorld extends JFrame 这样 做之后,就得 到上面 描述 的所 有 JFrame 属性,最重要的是 操作系统 对窗口的本 机支持。下一 步是把 组件 放在屏幕上。在这个示例 中,使用了一个null 布局。在教程的 后面部分,您将学 到更多关于布局 和布局管 理器的 内容。但对 于这个 示例,可以用 数字表示 JFrame 上的 像素位置:public HelloWorld()super();this.setSize(300,200);this.getContentPane().setLayo

18、ut(null);this.add(getJLabel(),null);this.add(getJTextField(),null);this.add(getJButton(),null);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 40 页 -this.setTitle(HelloWorld);private javax.swing.JLabel getJLabel()if(jLabel=null)jLabel=new javax.swing.JLabel();jLabel.setBounds(34,49,53,18);jLabel.setText(Name:);retur

19、n jLabel;private javax.swing.JTextField getJTextField()if(jTextField=null)jTextField=new javax.swing.JTextField();jTextField.setBounds(96,49,160,20);return jTextField;private javax.swing.JButton getJButton()if(jButton=null)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 40 页 -jButton=new javax.swing.JButton();jButto

20、n.setBounds(103,110,71,27);jButton.setText(OK);return jButton;现在 组件 都放在了JFrame 上,并且需要在屏幕上 显示JFrame,并让 应用程序可以运行。就像 在所 有的 Java 应用程 序中一 样,必须 添加 一个 main 方法,才能让 Swing 应用程 序运行。在这个main 方法中,只需要 创建HelloWorld 应用程序对象,然后 调用其 setVisible()即可:public static void main(String args)HelloWorld w=new HelloWorld();w.setV

21、isible(true);完成了!这就是创建 应用程 序的所 有过程。完整 代码 如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 40 页 -package cn.edu.jnu.www;import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class HelloWorld extends JFrame private JLabel jLabel;private JTextField jTextField;private JButto

22、n jButton;public HelloWorld()super();this.setSize(300,200);this.getContentPane().setLayout(null);this.add(getJLabel(),null);this.add(getJTextField(),null);this.add(getJButton(),null);this.setTitle(HelloWorld);名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 40 页 -private javax.swing.JLabel getJLabel()if(jLabel=null)

23、jLabel=new javax.swing.JLabel();jLabel.setBounds(34,49,53,18);jLabel.setText(Name:);return jLabel;private javax.swing.JTextField getJTextField()if(jTextField=null)jTextField=new javax.swing.JTextField();jTextField.setBounds(96,49,160,20);return jTextField;private javax.swing.JButton getJButton()if(j

24、Button=null)jButton=new javax.swing.JButton();jButton.setBounds(103,110,71,27);jButton.setText(OK);名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 40 页 -return jButton;public static void main(String args)HelloWorld w=new HelloWorld();w.setVisible(true);附加 的 swing 小部件(上)JComboBox在这一 节中,我将介 绍 Swing 库中的其他 全部组件、如何使 用它们

25、、它们看起来 是什么 样的,等等,这 部分内容应当 让您更 好地了 解 Swing 为 UI 开发人员提供了什么。我们 从 JComboBox 开始介 绍。组合框与下 拉选择相似,区别在于使用组合框时用户可以不从 列表中选择项 目,还可以 选择一个(而且只有一个)项目。在 某些版本的组合框中,还可以 输入自己 的选 择。浏览 器的地址栏 就是一个 示例:它是一个 允许输入自己 选项的组合框。以下是JComboBox 在 Swing 中看起来 的样子:名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 40 页 -JComboBoxJComboBox 的重要 函数包括 JComboB

26、ox 包含 的数据。需要 有一种方 法来设置JComboBox 中的数据、修改数据、在用户 选择时得 到用户的 选择。可以 使用以下JComboBox 方法:?addItem():添加 一个项目到 JComboBox.?get/setSelectedIndex():获取/设置 JComboBox 中选中项目的索引。?get/setSelectedItem():获取/设置选中的对象。?removeAllItems():从 JComboBox 删除所 有对象。?remoteItem():从 JComboBox 删除特定对象。JTextFieldJTextField 的一个 细微 变化 是 JPas

27、swordField,它允许您隐藏 在文本字 段区域中显示的字符。毕竟,在您 输入 口令的 时候,如果每个人都能看 到,那可没什么 好处?可能 根本就不好,而且 在私人数据 如 此脆弱 的今天,您需要所 有能够得到的帮助。以下是JPasswordField 在Swing 中看起来 的样子:JPasswordFieldJPasswordField 上额外的“安全性”方法对 JTextField 的行为做了轻微 改变,所以不能 阅读文本:?get/setEchoChar():获取/设置每次字 符输入时在 JPasswordField 中显示的字符。在获取口令时,不会返回“回声”,而是返回实际 的字

28、符。名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 40 页 -?getText():不应当 使用这个 函数,因为它 会带来可能的安全问题(String 会保存在内存中,可能的 堆栈转储会暴露口令)。?getPassword():这是 从 JPasswordField 中获得口令的恰当方法,因为它 返回一个包含口令的char。为了保证 恰当的安全性,数组应当被清为 0,以确保它不会保留在内存中。JCheckBox/JRadioButtonJCheckBox 和 JRadioButton 组件 向用户 呈现选项,通常采用多选的格式。区别 是什么?从实 践的角度来说,它们 没有那么

29、不 同。它们的 行为方式相同。但是,在一般的 UI 实践中,它们 有细微差异:JRadioButton 通常组合 在一 起,向用户 呈现带有必选答案的问题,而且这些答案 具有强制 性(这意味着问题只能 有一个答案)。JRadioButton 的行为保证了这个用法。一 旦选 择了 JRadioButton,就不能 取消 对它的 选择,除 非选择了在同一组中的另外一个 单选钮。从效果 上看,这 就保证了 选项的惟一和必 选。JCheckBox 的不同在于,允许随机 地选择/取消 除选择,并允 许为问题 选择多 个答案。这里 是个 示例。问题“您是 男孩 还是女孩!”有两个惟一答案 选项“男孩”或“

30、女孩”。用户必须 选择一个,不能 同时 选中。另一方面,问题“您的习 惯是什么?”的答案 有“跑步”、“睡觉”或“阅读”,不 应当 只 允许为此问题 选 择一个答案,因为人们可能 有不止一个习 惯。把这些JCheckBoxe 或 JRadioButton 捆绑 成一 组的类是ButtonGroup类。它 允许把选项组织 在一 起(例 如“男孩”和“女孩”),这 样,其中一个 被选 择时,另外一个 就自动 取消选择。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 40 页 -以下是JCheckBox 和 JRadioButton 在 Swing 中看起来 的样子:JCheckBo

31、x 和 JRadioButton需要 记住 的重要的ButtonGroup 方法是:?add():添加 JCheckBox 或 JRadioButton 到 ButtonGroup。?getElements():获得 ButtonGroup 中的全部组件,允许对它们 进行迭代,找到其中选中的那个。JMenu/JMenuItem/JMenuBarJMenu、JMenuItem 和 JMenuBar 组件 是在JFrame 中开发菜单系统的主要构造 块。任何菜 单系统 的基础 都是 JMenuBar。它 平淡而乏味,但 却是必需的,因为每个 JMenu 和JMenuItem 都要用它 构建。要用s

32、etJMenuBar()方法把 JMenuBar 附着 到 JFrame。一旦将它 附加到 JFrame 中,就 可以 添加 所有想 要的 菜单、子菜单和菜单项。JMenu/JMenuItem 的区别 看起来 可能 很 明显,但 实际上,在幕 后看起来 并不像表面那样。看看 类的类层 次结 构,就知道JMenu是JMenuItem的子类。但是,在 表面上,它们是 有区别的:用JMenu 包含 其他JMenuItem 和 JMenu;JMenuItem 在选中时触发操作。JMenuItem 也支持 快捷 键的 概念。与您用 过 的大多数应用程 序一样,Swing 应用程 序允许您按下Ctrl+(

33、某个键)来触发一个 操作,就像选中菜单键 本身一样。想想 用来剪切 和粘贴的快捷 键 Ctrl+X 和 Ctrl+V。除此 之外,JMenu 和 JMenuItem 都支持 访 问键。用 Alt 键与某个字母关联,模拟菜单本身的 选择(例 如,在Windows 中 按下 Alt+F,然后 按下 Alt+x 就可以关闭 应用程 序)。名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 40 页 -以下是 包含JMenu 和 JMenuItem 的 JMenuBar 在 Swing 中的样子:JMenuBar、JMenu 和 JMenuItem这些 类需要的 重要 方法是:?JMenu

34、Item and JMenu:oget/setAccelerator():获取/设置用作快捷键的 Ctrl+键。oget/setText():获取/设置菜单的文本。oget/setIcon():获取/设置菜单使 用的图片。?JMenu 专用:oadd():添加 另外一个 JMenu 或 JMenuItem 到 JMenu(创建嵌套菜单)。JSlider在应 用程 序中 JSlider 支持 数值变化。它是一 种迅速 而简单的方式,不 仅能让用户以可 视形式 获得他们当前 选择的反馈,还能得 到可以 接受 的值的范围。想像 一下这 种情况:可以提供一个 文本字 段,允许 用户 输入 值,但是这

35、样做就 带来了额外的麻烦,要确保输入 的值是数字,还要确保数字 符合要求的数值范围。例如,如果有一个金融Web 站点,它 向您提问要在 股票 上投资 的 百分比,那么您不 得不检查 在文本字 段中输入 的值,以 确保它们是 数字,而且 在 0 到 100 之间。如果换 用 JSlider,那么就可以 确保选择的是 指定范围 内的数字。在 Swing 中,JSlider 看起来如 下所 示:JSliderJSlider 中的重要 方法是:名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 40 页 -?get/setMinimum():获取/设置可以选择的最小值。?get/setMa

36、ximum():获取/设置可以选择的最大值。?get/setOrientation():获取/设置 JSlider 是上/下还是左/右滚动条。?get/setValue():获取/设置 JSlider 的初始 值。JSlider与 JSlider 非常像,可以用JSpinner 允许用户 选择一个整数值。JSlider 的一个 主要优势就是比JSlider 的 空间紧凑。但是,它的不足就 是无法 方便地设置其边界。但是,两个组件 之 间的比 较仅此而 已。JSpinner 更加灵活,可以用 来在任意组的值之间进行选 择。除了在 数字 间选择,它还可以用 来在日期、名称、颜色 和任何事之间进行

37、选择。这使 JSpinner 极为强 大,允许您提 供其中只包含 预定义的 选择的组件。使用这种方 式,它与JComboBox 类似,但是它们的 应用不能 互换。只应把 JSpinner 用在 逻辑 上连续的选择数字和 日期是最合 逻辑 的选择。而另一 方面,在 呈现看起来 随机的选择并且选 择之间没有连 接的时候,JComboBox 是更 好 的选择。JSpinner 看 起来如 下所 示:JSpinner重要 方法是:?get/setValue():获取/设置 JSpinner 的初始 值,在基本实例中,需要是 整数。?getNextValue():获取按下上 箭头按钮之 后应当选中的下一

38、个 值。?getPreviousValue():获取按下下 箭头按钮之 后应当选中的前一个 值。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 40 页 -JToolBarJToolBar 充当 其他 组件(JButton、JComboBoxe 等)的调色板,共同构 成您在 大多 数应用程 序中熟悉 的工 具栏。工具栏允许程 序把常用的 命令放在可以 迅速 发现的位置,并把它们以常 用命令组的形 式组合在一 起。一 般(但不 总是这样)情况 下,工具栏按钮在 菜单栏中会有对 应的命令。虽 然这不是必需的,但已经 变成了一 种公共实践,您 也应当试着这么 做。JToolBar 也

39、 提供了您在 其他 工具栏中看到过的其他功能:“浮动”的能力(也就是成为 主帧顶部 独立 的帧)。下图显示 了一个 非 浮动 JToolBar:非浮动JToolBar对于 JToolBar,要 记住 的 重要方法是:is/setFloatable(),它 获取/设置 JToolBar 是否可以浮 动。JToolTip您可能 到处 都看 到 过 JToolTip,但是 从来不知道 它们叫什么。它们 就像您鞋带上的塑料部件 到处 都有,但是您 就是不 知道 它们正 确的 名字(如果您想知道,那么可以 叫它们金属箍)。JToolTip 就是您 将鼠标停 留在某个东西 上面的 时候弹出来的小“泡泡”。

40、它们在 应用程序 中可能 非常有 用,可以为 难用的 项 目提 供帮助、扩展信息,甚至在拥挤 的 UI 中显示 某个项 目的 完整文本。在 Swing 中,可以 通过把鼠标放在某个组件上的 特定时间来 触发它们;它们 通常在鼠标处于 不活动状态 大 约 1 秒钟 之后显示。只要 鼠标还停留在那个组件 上,它们就 保持可见。名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 40 页 -JToolTip 的重 要部分 是它的 易 用性。setToolTip()方法是JComponent类中的一个 方法,这意味 着每个 Swing 组件 都能 有一个 与之关 联的工具提示。虽然JToo

41、lTip本身也是一个Swing 类,但目前,对 于您的需要,它 确实没有 提供更多功能,而且本身也不该被创建。可以 通过调 用 JComponent 的setToolTip()函数访问和 使用它。以下是JToolTip 看起来 的样子:A JToolTip附加 的 swing 小部件(下)JOptionPane JOptionPane是在 Swing 中类似“快捷 方式”的东西。通常,作为 UI 开发人员,您需要 向用户呈 现快速 信息,让用户了 解错误 和信息。甚至 可能想得到一些 快速数据,例如名称或数字。在 Swing 中,JOptionPane类为这些 东西 提供了快捷 方式,但这 并

42、不是它必须 完成的 任务。不需要 让每个开 发 人员重头开始 重 复相同的工作,Swing 已经提供了这个 基本的但 很有 用的类,为 UI 开发 人员提供了获取 和接收简单消息的简 易方法。以下是一个JOptionPane:JOptionPane使用 JOptionPane 时有点麻烦 的是可以 使用的 全部选项。虽然简单,但是它 仍然提供了 大量 选项,这些 选项有 可能 造成混淆。学习JOptionPane 的最好方法就是使用它;编写代码,观察 弹出的是什么。这个 组件 几乎 可以 让您修改 它的 每一方面:帧标题、消息本身、名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共

43、 40 页 -显示 的图标、按钮 选 项,以及是否需要 文本响应。因为有太多的可能 性,无法在本教程 中一一列 举它们,所以您 最好是访问 JOptionPane 的 API 页面,查看它的 众多可能性。JTextAreaJTextArea 比 JTextField 更进了一 步。JTextField 被局 限在一 行文 本中,而 JTextArea 扩展了这个能 力,支持 多 行文 本。可以把它 想像 成一个 空白页,您可以在 其中的任意地方进行输入。正 如您可能 猜 到的,JTextArea 包含许多 与 JTextField 相同的功能,毕竟,它们 实际上是 相同的组件。但是JTextA

44、rea 提供 了一些 额外的重要功能,可以把它 区别 开。这些功能 包括单词自动 换行的能 力(即 把长文 本自动 换行到下一行,而不是 将单词从中断开)、对文 本自动 换行的能 力(即把长的文本 行移动到下一行,而不是 创建一个需要 水平滚动条的非常 长的行)。Swing 中的 JTextArea 看起来就 像您 期望 的那样:A JTextArea支持 行和单词的自动 换行的重要方 法是:?is/setLineWrap():设置在行过长的时候是否要自动换行。?is/setWrapStyleWord():设置在单词过长的时候是否要把长单词移到下一行。JScrollPane上面的 示例构造 完

45、 成之 后,假设JTextArea 包含 太多文本,而给定的空间中容 纳不下,那这该 怎么办?如果 您以为 会自动 出 现滚动条,那么很不幸,您错了。JScrollPane 添补了这名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 40 页 -个空 白,为 Swing 组件 提 供了处理 所有与 滚动条相关的 动作。所以 虽然为每个需要的 组件提供 滚动块可能 有 些痛苦,但是一 旦添加 了它,它就会自动 处理每件事,包括在需要的 时候隐藏/显示 滚动 条。除了用需要 自动 换 行的组件 创建 JScrollPane 之外,不必 直接处理 它。根据上面的 示例,用 JTextAr

46、ea 调用 JScrollPane 的 构造 函数,这为JTextArea 创建了在 文本过长时 滚动的能 力:JScrollPane scroll=new JScrollPane(getTextArea();add(scroll);更新 后的示例 看起来如 下所 示:JScrollPane 示例JScrollPane 也公开了它 将创建 的两个 JScrollBar。这些 JScrollBar 组件 也包含 一些方法,可以用这些 方法来 修改 组件 的行为(虽然它们不在本教程的范围 之内)。使用 JScrollPane 需要的 方法 是:?getHorizontalScrollBar():返

47、回水平的 JScrollBar 组件。?getVerticalScrollBar():返回垂直的 JScrollBar 组件.?get/setHorizontalScrollBarPolicy():这个“策略”可以是以下 三个之一:Always、Never 或As Needed。?get/setVerticalScrollBarPolicy():与水平函数相同。JList名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 40 页 -JList 是一个 有用的 组件,用 于向用户 呈现许多 选择。可以把它 当作 JComboBox 的扩展。JList 提供 了更 多选择,并 添加

48、了多选的能 力。在JList 与 JComboBox 之间进行 选择通常取 决于以下 两个 特性:如果需要 多选,或者选择的选项超过 15 个(虽然这个 数字并不是通 用规则),那 么就应当 选择 JList。应用 将 JList 与 JScrollPane 结合 使用,就 像上面演示的那样,因为它能 够呈现比它的 空间所能 容纳的更 多 的选项。JList 包含 选择模型的概念(在 JTable 中 也会 看到),在这 里,可以 设置 JList 接受不同类型 的选择。这些 类型是:单 一选择(只能 选择一 项)、单一间隔选择(只能 选择相邻选项),以及任 意多项 或者 多项间 隔选择(可以

49、 选择任意数量、任意组合的选择)。JList 是第 一个我 称为“复杂 组件”的组件,该复杂 组件还包含JTable 和 JTree,它们 支持大量 的定 制变化,其 中包 括改变UI 的表现方 式、处理 数据的方式。因为本教程只是想介绍基 础知 识,所以我不 想深入这些更高级的 功能,但是在 使用这些 组件 时有件事需要 记住它们 带 来的挑战 要比目前为 止介绍过 的所 有组件 都大。JList 在 Swing 中看起来如 下所 示:JListJList 中有许多处理 数据 的 函数,而且根据我的 说法,这些 也只不过是使用 JList 的细节的皮毛 而已。以下是一些 基本方法:名师资料总

50、结-精品资料欢迎下载-名师精心整理-第 23 页,共 40 页 -?get/setSelectedIndex():获取/设置列表中选中的行;在多选择列表的情况下,返回一个int。?get/setSelectionMode():与上面 解释的一样,获取/设置选择模式,模式有:单一、单一间隔和多选间隔。?setListData():设置在 JList 中使用的 数据。?get/setSelectedValue():获得选中的对 象(与选中行号对应)。JTable在考虑JTable 时,请想像 一下一个Excel 工作 表,这 样就可以对JTable 在 Swing 中的作 用有一个 清晰 的印象。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁