JavaSwing高级编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13.1.1 JFrame容器
• JFrame是java.awt.Frame的扩展版本,是一个window子类,在使用 Swing类库实现用户图形接口,必须继承该类。JFrame容器包括窗口 标题、窗口外观、窗口边界、调整窗口大小的图标、关闭和最小化窗 口的图标。并且可以直接在容器上添加组件,如按钮、文本等。 该类的构造方法: public JFrame() throws HeadlessException。 创建了一个新的容器窗口,默认该窗口是不可见的。 public JFrame(String title) throws HeadlessException 创建一个新的容器窗口,通过方法的参数设置窗口标题,该窗口默认 是不可见的。 该类的常用方法: public Container getContentPane() 该方法返回一个框架对象,使用该框架对象来添加组件,如增加按钮、 菜单、工具栏、列表框等组件。 setSize(int width ,int hight) 设置窗口尺寸、窗口大小以像素为单位计算。 show()
13.2.3 Swing的事件模型
• Swing事件模型的显著特点是引发事件的组件与处理事件的 代码分开。在Swing中的任何组件都可以出发事件,事件类 型多样,如按钮组件,有单击按钮、双击按钮、鼠标划过 按钮等事件,这些事件都有相应的类与之对应。程序员需 要做的就是编写处理事件的类,创建监听器对象,并对组 件注册监听器。 • 下表13.1是事件、监听器、添加监听器方法,以及支持这 些事件的基本组件的总结。 • 通过该表读者可以发现每种Swing组件都支持某种或几种类 型的事件。如果程序员需要在组件上实现监听某种行为, 只要找出该行为对应的事件类型,并创建监听器类,为该 组件注册监听器即可。
• 在Swing中引入了不同类型的按钮,如单选按钮、 复选框、菜单选项都继承了AbstractButton,本 节将首先示范各种可用按钮。 • 这些按钮包括BasicArrowButton、JToggleButton、 JCheckBoxButton和JRadioButton,如代码按钮示 例所示。
13.2 Swing的事件模型
• 无论用户界面设计的如何美观别致,最重要的一 点是知道这些组件能做什么,如单击一个“打开 文件”按钮,我们希望打开的是文件对话框,而 不希望程序没有任何响应。Java提供了事件模型, 使Swing中出现的任何组件都会响应用户的某种动 作,完成用户和程序的交互。这其实也是用户接 口的基本功能。本节通过一个具体的例子,即制 作一个按钮,但用户单击时,按钮上的文本标签 会不断变化,记录用户单击按钮的次数。通过这 个例子使读者知道组件是如何响应用户动作的, 其间会涉及到其他知识点,会在使用时一一简单 介绍,但是这里的介绍不会喧宾夺主,使读者的 精力集中在事件响应以及事件的处理上。
13.3.6 复选框
• 复选框是可以多选的一类图形组件,当选中该组 件时,组件前端的方括号内打对勾标记,用户可 以设置监听器,触发某种行为,代码复选框示例 程序提供了完整的创建复选框的程序代码。
13.3.7 组合框
• 组合框的作用是使用户只能从供选择的元素中选出一个元素。 Swing类库中的JComboBox类创建组合框。JComboBox只允许用户从 列表中选择,不允许输入。 下面创建一个组合框,其中有一个按钮负责向组合框中添加元素, 而一旦用户单击组合框中的元素,则在文本块中就显示该元素的 内容,如果此时单击删除按钮则删除选中的元素,示例代码为代 码。
• • • • • • • • • • •
13.1.2 JPanel容器
• JPanel容器是个通用容器,在该容器上可以放置其他组件 如单选按钮、列表框等。还包含其他容器,如一个新的 JPanel对象,从而方便地实现容器的嵌套。为设计灵活的 用户界面提供方便。JPanel容器也称为面板,即英文Panel 的直译。以后在用到JPanel的地方我们就统一称为面板。 在面板创建后是无法单独显示的。必须放在JFrame或 Applet这样的顶层窗口中才可以显示。该类的构造函数: • JPanel():创建一个面板,并且该面板组件的布局管理器 为FlowLayout()。 • JPanel(LayoutManager layout):创建一个面板,且该面 板设置了指定的布局管理器。布局管理器管理在容器上放 置的组件,具体的内容会在13.4节详细介绍。
13.1 Swing容器
• 容器是放置界面组件的地方,在Swing中提供了两 个容器,一个是Jframe,它是一个最基本的窗口 容器,一个是Jpanel,也称为面版,面版可以放 置在Jframe容器或Applet上,使界面的布局更灵 活。 • 常用的布局方式是首先设计几个JPanel面版,再 将组件添加到JPanel上,然后将JPanel按照布局 要求再添加到JFrame上,当然这种嵌套关系可以 进一步深入,如在JPanel上可以继续添加JPanel, 只是一般的界面不会设计的这么复杂。其实界面 一定要保持简洁、美观、功能齐全且布局规范, 最好不要使用过于复杂的界面布局。下面首先介 绍JFrame容器。
13.3.3 文本
• 文本组件为JTextField对象,在代码中已经使用 过该组件,这里我们为该组件增加更多的监听功 能。这里读者也可以再次复习按钮监听器的使用。 代码文本块示例程序。
13.3.4 工具提示
• 读者可能有这样的经验,如操作Word时,当鼠标 停留在工具栏上某个工具时,会弹出一个内含小 方框,文字说明工具的作用。Swing中的几乎所有 组件都是继承自JComponent,它提供了一个 setToolTipText(String str)方法,来创建工具 提示。如一个JButton对象为jb,在该对象上创建 工具提示如下所示。 • jb.setToolTipText(“保存文件”); • Swing的其他组件也可以这样调用创建自己的“工 具提示”。
13.2.2 实现按钮的事件监听
• 在13.2.1中创建了三个按钮,但是无论如何单击 按钮,程序没有任何反应,所以此时必须要求自 己编写事件处理代码来响应单击事件。用户单击 按钮便引发一系列事件,这也正是GUI编程中事件 驱动模型的内涵。 • 在Swing中,每个组件都可对发生在其上的事件做 出响应。例如,如果你需要知道鼠标在按钮上移 动的事件,就需要注册与鼠标移动事件相关的信 息,提供对该动作的处理代码。 • 这里还是通过为一个按钮注册事件监听机制使按 钮组件可以响应用户的单击动作。此时需要为按 钮注册一个事件监听器。可以通过调用JButton的 addActionListener() 在Swing中设计了单选按钮,其目的是只能在多种 选择中选择一个。实现单选按钮很简单,只要创 建一组JRadioButton,再把这些组件放到同一个 ButtonGroup中就可以。在同一个容器中可以有多 个ButtonGroup。其中JRadioButton的初始状态可 以自由设置为false或true,这取决于程序的需要。 但不能同时把多个JRadioButton设置为true。 • JRadioButton 类的构造函数如下: • public JRadioButton(String str):创建带有文 本字符标识的单选按钮。 • public JRadioButton(String str,boolean bl): 创建带有文本字符标识的单选按钮,并且可以设 置单选按钮的起始状态。
13.3.4 工具提示
• 读者可能有这样的经验,如操作Word时,当鼠标 停留在工具栏上某个工具时,会弹出一个内含小 方框,文字说明工具的作用。Swing中的几乎所有 组件都是继承自JComponent,它提供了一个 setToolTipText(String str)方法,来创建工具 提示。如一个JButton对象为jb,在该对象上创建 工具提示如下所示。 • jb.setToolTipText(“保存文件”); • Swing的其他组件也可以这样调用创建自己的“工 具提示”。
13.2.1 制作一个按钮
• 制作一个按钮很容易,只要创建一个JButton类对象即可。 JButton类的构造函数有以下几个。 • public JButton():创建不带文本也不带图标的按钮,或称为空 按钮,通常这样的按钮需要调用其他方法来设置文本或图标。空 按钮没有意义,用户不知道这样的组件有什么作用。 • public JButton(Icon icon):创建带图标的按钮,图标对按钮的 作用有一定的指导意义,如在制作工具栏时就是使用带图标的按 钮实现的。如在word中的工具栏如图13.3所示。 • public JButton(String text):创建带文本的按钮,如我们在使 用软件时经常遇到的“确认”按钮、“取消”按钮等。 • public JButton(String text,Icon icon):创建带有文本且带有 图标的按钮。 • JButton自己拥有一个窗口,一旦屏幕更新如放大窗口时, JButton组件就会自动重绘。用户需要做的只是把这些按钮创建出 来,并放在一个容器中。
13.3.4 工具提示
• 读者可能有这样的经验,如操作Word时,当鼠标 停留在工具栏上某个工具时,会弹出一个内含小 方框,文字说明工具的作用。Swing中的几乎所有 组件都是继承自JComponent,它提供了一个 setToolTipText(String str)方法,来创建工具 提示。如一个JButton对象为jb,在该对象上创建 工具提示如下所示。 • jb.setToolTipText(“保存文件”); • Swing的其他组件也可以这样调用创建自己的“工 具提示”。
13.3 Swing组件
• Swing提供了丰富的组件,这些组件的合理使用, 可以方便地满足用户界面设计的需求,在创建组 件时,需要选择组件的构造函数一完成特殊的需 要。本节在讲解这些图形组件时,只选择最常用 的一种构造函数,如果读者有特殊的需要可以查 阅Java的HTML文档。
13.3.1 按钮
13.3.2 图示(Icons)
• 在13.2.1节,读者已经看到了图示的作用。实际上可以在 JLabel、JButton、JCheckBox、JRadioButton等类中使用 图示。本节将以按钮为例介绍如何使用图示。 • 制作图示第一需要创建一个ImageIcon对象,该类的构造函 数的参数是图示文件(如image.gif)的路径(如 d:\images\image.gif)。在调用组件的setIcon()方法, 该方法的参数为一个ImageIcon对象。这样程序就可以打开 图形文件,在组件上显示图示文件了。代码按钮上的图示 示例程序。
第13章 Java Swing编程
• Java Swing是 采用Java语言编写GUI(图形用户接口)程 序的类库,它是轻量级的类库,所有Swing中的图形组件都 是以大写字母“J”开头,如容器Jframe 、按钮Jbutton、 文本区域JtextField等。 • 本节将首先介绍Swing中的容器,因为容器是放置组件的场 所,所以一旦用户明白容器的创建后再使用,就可以方便 地向容器添加组件了。在Swing编程中对事件的处理也是很 重要的部分,用户图形接口是个交互性的平台,需要响应 用户的输入或行为(如单击菜单打开一个窗口等)。在 13.2节通过一个简单的例子追踪一个事件使读者对Swing的 事件模型有感性的任何和初步地理解。13.3节在本章占用 了大部分篇幅,读者通过这部分的学习可以清楚的理解并 掌握各种图形组件的功能和使用。13.4节的布局管理器是 具有“Java”特色的功能,因为使用Java语言编写的程序 具有跨平台的特性,所以要求可以依据不同的平台管理图 形界面的组件管理。灵活使用布局管理器可以创建简洁、 美观的用户界面。