Java 图形界面设计
4
12.1 图形用户界面设计
AWT 和 Swing 是 Java 设计 GUI 用户界面的基础. 与AWT 的重量级组件不同, Swing 中大部分是轻量级组 件。 正是这个原因, Swing 几乎无所不能, 不但有各式各 样先进的组件, 而且更为美观易用.所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。 但是因为 Swing 是架构在 AWT 之上的, 没有 AWT 就没 有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。 但是,最好不要二者 混用——除开显示风格不同不说,还很 可能造成层次 (Z-Order) 错乱
9
12.2.1 Swing组件分类
辅助类和组件类都属于非容器类组件不能包含其他组件的 组件,其种类较多。 辅助类 辅助类是用来描述组件属性的,辅助类通常包含在 java.awt包中,Swing组件不能取代AWT的全部类, 只能替代AWT的GUI组件类,AWT辅助类保持不变。 组件类 所有Swing GUI组件类(除JFrame、JApplet和 JDialog)都是JComponent类的子类,例如, JButton、JTextField、JTextArea、JComboBox、 JList、JRadioButton和JMenu等。 Swing轻型组件分类参见教材P202 表12.1
31
12.2.2 颜色类、字体类、图像图标类
2.字体类Font 用来规范组件所用的字体样式、大小与字形等。 构造方法: Font (String font_name, int style, int size)
字体名称 字形样式:PLAIN 、BOLD、ITALIC
字号大小
32
12.2.2 颜色类、字体类、图像图标类
23
12.2.1 Swing组件分类
3. 面板类JPanel 该类的构造函数: JPanel():创建一个面板,并且该面板组件的布局管理器 为FlowLayout()。 JPanel(LayoutManager layout):创建一个面板,且该 面板设置了指定的布局管理器。布局管理器管理在容器上 放置的组件,具体的内容会在12.4节详细介绍。
5.图形界面设计的步骤 1. 创建组件(Component):创建组成界面的各种元素,如 按钮、文本框等。 2. 指定布局(Layout):根据具体需要排列界面上各元素的 位置关系。 3. 响应事件(Event):定义图形用户界面的事件和各界面元 素对不同事件的响应,从而实现图形用户界面与用户的 交互功能。
34
Java中Image类与ImageIcon类的区别
Image类一般尺寸过大,不适合作ImageIcon类。
ImageIcon imageIcon = new ImageIcon(“duke.gif”);
// Icon由图片文件形成 Image image = imageIcon.getImage(); // 但这个图片太大不适合做Icon
命令提示符环境
20
例App12_1_1
21
例App12_1_1
例App12_1_2
22
12.2.1 Swing组件分类
3. 面板类JPanel 面板是一种没有标题栏、没有边框的中间层容器,在该容 器上可以放置其他组件如单选按钮、列表框等。还可以包 含其他容器,如一个新的JPanel对象,从而方便地实现容 器的嵌套。 在面板创建后是无法单独显示的。面板不是顶层容器,必 须放到其他容器内,也可以放入另一个面板内。必须放在 JFrame或Applet这样的顶层窗口中才可以显示。 一个界面只可以有一个JFrame窗体组件,但可以有多个 JPanel面板组件
17
12.2.1 Swing组件分类
该类的常用方法(P203-204) getContentPane() 该方法返回一个框架对象,使用该框架对象来添加组件,如 增加按钮、菜单、工具栏、列表框等组件。 setSize(int width ,int hight) 设置窗口尺寸、窗口大小以像素为单位计算。 getJMenuBar() 返回此窗体上设置的菜单栏。 setJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏。 setIconImage(Image image) 设置要作为此窗口图标显示的图像。
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”。
12
12.2.1 Swing组件分类
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”,各个层的关 系如教材P202 图12.2所示。 顶层容器。是一个窗口容器对象,该对象包含了Swing窗 口的各个层次,在该对象里面可以加入其它窗口对象。 根窗格。是在创建顶层容器后自动创建的,供Swing顶层 容器在后台使用,是顶层容器中做包含的最内层,通常无 法在这一层上做任何操作与处理。 分层窗格。加入分层窗格中的组件可以设置其图层层次, 且不会被内容窗格中的对象屏蔽。是其它窗格的父级。
第12章 图形界面设计
本章主要内容
12.1 图形用户界面设计 12.2 图形用户界面工具包—Swing 12.3 创建组件 12.4 布局管理器
2
12.1 图形用户界面设计
图形用户界面(Graphics User Interface,GUI) 用图形的方式,借助菜单。按钮等标准界面元素 和鼠标操作,帮助用户方便地向计算机系统发出 指令、启动操作,并将系统运行的结果同样以图 形方式显示给用户的技术。 Java的GUI程序设计是Java程序设计的基础。
14
12.2.1 Swing组件分类
15
12.2.1 Swing组件分类
2. 框架类JFrame 是Java应用程序的顶层容器。 JFrame是java.awt.Frame的扩展版本,是一个window 子类,在使用Swing类库实现用户图形接口,必须继承该 类。 JFrame容器包括窗口标题、窗口外观、窗口边界、调整 窗口大小的图标、关闭和最小化窗口的图标。并且可以直 接在容器上添加组件,如按钮、文本等。
5
12.2图形用户界面工具包—Swing
Java图形用户界面的基本元素包括:
用户界面组件(组件类) 事件处理模块(事件类) 图形和图像工具(图形类、图像类) 布局管理器(布局类)
它们主要都在javax.swing包中,Swing是Java 包的一部分。
6
7
12.2.1 Swing组件分类
30
12.2.2 颜色类、字体类、图像图标类
参数取值0——255 1.颜色类Color ,越大则表明这种 属于java.awt 颜色的成分越重。 每种颜色均看作是由红(R)、绿(G)、蓝(B)三色组成。 构造方法: Color (int r, int g, int b) 颜色常量值 Color.black , Color.blue , Color.gray , Color. red Color.white 例如 Color c = new Color(int rgb)
组件:构成图形用户界面的各种元素。 构建图形用户界面的类可以分成三组:
容器类(container class) 辅助类(helper class) 组件类(component class)。
8
12.2.1 Swing组件分类
容器类 容器类组件中可以包含其他组件,也可以包含其他容器。 容器又分为两种:顶层容器和非顶层容器。 顶层容器是可以独立的窗口,Swing的顶层容器有 JFrame、JApplet和JDialog等。 非顶层容器,不是独立的窗口,它们必须位于窗口之内, 非顶层容器包括JPanel及JScrollPanel等。
24
12.2.1 Swing组件分类
3. 面板类JPanel 常用方法:
ห้องสมุดไป่ตู้
JPanel默认的布局管理器是FlowLayout,可以使用 setLayout()方法改变其默认布局。 也可以采用包含它的容器不同的布局管理器。
25
例App12_2
在框架中加入面板
26
例App12_2
在框架中加入面板
27
例App12_2
在框架中加入面板
28
12.2.1 Swing组件分类
4. 组件类 又称控制组件(控件),它里面不能包含其他组件。 作用:完成与用户的交互,包括接收用户的命令、接收用 户输入的文本或用户的选择、向用户显示文本或图形。 常用控件:命令类、选择类、文字处理类等。
29
12.2.1 Swing组件分类
3
12.1 图形用户界面设计
Java提供的两个处理图形用户界面的类库: Java. awt包和javax. swing包
Sun已经提供了一个跨平台 GUI开发工具包java.awt(抽 象窗口工具箱)
Sun又开发了一个新的 GUI开发工具包javax.swing 解决了awt中存在的本地化 问题
18
例App12_1
辅助类
组件类
19
例App12_1
为什么在该实例中被没有显示背景 色? JFrame默认采用了FlowLayout布局 管理器,你的组件在该布局管理器 中被塞满整个frame,挡住了背景。 就是说,实际上JFrame还是有背景 的一般用JFrame的时候要初始化一 个JPanel,把组件放在JPanel里, 然后把JPanel放到JFrame里,这样 可以较好的控制组建位置等其他的 东西。在这种方式下直接给JPanel 设置setBackground就可以一直看 到背景了