java图形用户界面GUI
第13章
图形用户界面
Java程序设计
导读 Introduction
图形用户界面设计是程序设计的重要组成部分,Java语言提供 了丰富的组件来完成界面设计,并通过事件机制实现功能处理。
C ONTENTS
目录
13.1 图形用户界面概述 13.2 窗口 13.3 常用组件与布局 13.4 事件处理 13.5 对话框 13.6 小结
类型
方法名
JFrame()
JFrame(String title)
void setTitle(String title) void setSize(int width,int height) void setRisizable(boolean r)
功能
构造一个初始时不可见的窗口 创建一个初始不可见的、指定 标题的窗口 设置窗口标题栏的内容 设置窗口的大小 设置是否可以改变窗口大小
13.1.1 抽象窗口工具集AWT
AWT由下面几部分组成: Component(组件):按钮、标签、菜单等组件。 Container(容器):扩展组件的抽象类Window、Panel、Frame等。 LayoutManager(布局管理器):定义容器中各组件的放置位置和大小
等。 Graphics(图形类):与图形处理相关的类。
13.2.2 窗口菜单
2、JMenu类 JMenu(菜单)类,用于创建菜单。 一个菜单条中可以添加多个菜单对象。一个菜单中可以添加另一个菜单, 实现菜单的嵌套。 JMenu类的常用构造方法:
JMenu(String s)
13.2.2 窗口菜单
3、JMenuItem类
JMenuItem(菜单项)类用于创建 菜单项,每一个菜单中可以包含多个菜 单项。JMenuItem类的常用构造方法:
JPasswordField(String text) JPasswordField(String text,int columns)
13.3.1 常用组件
7、JTextArea文本区JScrollPane滚动条视图 JTextArea类用于创建显示多行文本的文本区。常用构造方法:
JTextArea(String text) JTextArea(int rows,int columns) JTextArea(String text,int rows,int columns)
4、JLabel标签 JLabel类用于创建显示短文本字符串或图像的标签。常用的构造方法:
JLabel() JLabel(String text) JLabel(String text,Icon icon,int horizontalAlignment)
13.3.1 常用组件
5、JTextField文本框
JTextField类用于创建编辑单行字符串的文本框。常用的构造方法:
JTextField(String text) JTextField(String text,int columns)
6、JPasswordField密码框 JPasswordField类功能与JTextField类相同。 不同之处:输入内容时不直接显示,而是用“*”或“●”代替。常用的 构造方法:
JSplitPane用于将容器拆分成两个部分,每个部分各放一个组件。 容器拆分时可以水平拆分和垂直拆分,中间的拆分线可以进行移动。常 用构造方法:
public JSplitPane(int orientation,Component left,Component right) public JSplitPane(int orientation,boolean c,Component left,Component right)
JMenuItem(String text) JMenuItem(String text,Icon icon)
【例13.3】创建一个带有 菜单的窗口。
Example13_03.java
C ONTENTS
目录
13.1 图形用户界面概述 13.2 窗口 13.3 常用组件与布局 13.4 事件处理 13.5 对话框 13.6 小结
13.3.1 常用组件
1、JButton按钮类 JButton类用于创建普通按钮。常用的构造方法:
public JButton(String text) public JButton(String text,Icon icon)
2、JRadioButton单选按钮类和ButtonGroup按钮作用域类
承载和显示其他组件。 其他组件按照一定的顺序或位置装入容器,才
能够显示和使用。
13.1.3 组件与事件
GUI事件处理机制。 ✓ 组件在容器中不能够直接工作,需要与完成的功能连接起来,才能实现
具体的功能,这就是Java的事件机制。 ✓ 在事件机制下,一个事件分为事件源、监听器和事件处理程序。 ✓ 监听器用于监听事件源。一个监听器可以监听多个事件源。 ✓ 监听器对象监听到事件源发生的事件后,就通知相应的事件处理程序完
AWT的缺点是重量级组件,耗费资源多;图形用户界面依赖于本地系统,失去了统一的风格。
13.1.2 Swing组件
Swing组件是在AWT组件基础上发展而来的轻量级组件。 它提供了AWT所能提供的所有功能并进行了扩充。 组件均用Java语言进行开发。 界面风格统一,更为美观。 组件都放在javax.swing包中。
JRadioButton类用于创建单选按钮。JRadiaoButton类的构造方法: public JRadioButton(String text) public JRadioButton(String text,boolean selected)
13.3.1 常用组件
2、JRadioButton单选按钮类和ButtonGroup按钮作用域类 ButtonGroup按钮作用域类用于确定单选按钮的作用域。同一个域中只 能有一个单选按钮处于选中状态。 构造方法:
JScrollPane类属于容器,用于创建一个滚动条视图。与TextArea类配 合,当文本区内容超出显示范围时显示滚动条。(详见13.3.2节)
13.3.1 常用组件
【例13.4】常用组件的使用。 Example13_04.java
13.3.2 常用容器
Java提供了多种容器为程序设计所使用。 容器可分为三类: 顶层容器,包括JFrame、JDialog、JApplet、JWindow。 普通容器,包括JPanel、JScrollPane、JSplitPane、
成对应的功能,从而实现一次事件的处理。
C ONTENTS
目录
13.1 图形用户界面概述 13.2 窗口 13.3 常用组件与布局 13.4 事件处理 13.5 对话框 13.6 小结
13.2.1 JFrame类
JFrame(窗口)类是Container(容器)类的间接子类。一个JFrame 对象就是一个窗口,可以容纳其他组件。JFrame类的常用方法:
13.2.1 JFrame类
类型 void
void void Container void
方法名 setVisible(boolean v)
setLocation(int x,int y) setLocationRelativeTo(null) getContentPane() setDefaultCloseOperation(int o)
public ButtonGroup()
创建域对象后,调用add(AbstractButton b)方法将单选按钮加入到指 定作用域中。
13.3.1 常用组件
3、JCheckBox复选框 JCheckBox类用于创建复选框。构造方法:
JCheckBox(String text) JCheckBox(String text,boolean selected)
13.1.2 Swing组件
Component Container
Window JComponen
t
Frame
Dialog
JFrame JDialog
JComponent部分类层次关系
JLabel
JList AbstractButton
JMenuBar JTable JPanel
JTextComponent JTree
13.3.3 常用布局
每个容器使用布局管理器对存放其中的组建进行位置、大小的管理。 使用布局管理器后,组件在容器中的大小和位置完全由布局管理器控制 和管理,程序员不需要也不能再对组件的位置和大小进行控制。 每一种容器都有默认的布局管理器。 可以用setLayout()方法重新设置布局管理器。
13.1.1 抽象窗口工具集AWT
图形用户界面(Graphic User Interface,GUI)是 实现人机交互的窗口。
Java早期提供的AWT包(Abstract Window Toolkit,AWT)中包括了图形用户界面设计的基本类库,
它是Java设计GUI的核心,为用户提供基本的界面组 件。
功能
设置窗口是否可见,默认不可 见 设置窗口的位置(窗口左上角 坐标) 设置窗口居中显示
获取内容面板 设置在此窗口上发起 "close" 时默认执行的操作。
13.2.1 JFrame类
【例13.1】创建一个新窗口,定义该窗口大小为300*200,初始化 位置为200*200,并且大小不可调整。 Example13_01.java
【例13.5】运行结果
13.3.2 常用容器
2、JPanel
JPanel类,Java中最常用的轻 量级容器之一,默认布局管理器是 FlowLayout。
JPanel可以容纳其他组件,之间 可以嵌套,但本身不可见,需要加 入到顶层容器。常用构造方法:
JTextField(String text) JTextField(String text,int columns)