Java 图形界面设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”。
12
12.2.1 Swing组件分类
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”,各个层的关 系如教材P202 图12.2所示。 顶层容器。是一个窗口容器对象,该对象包含了Swing窗 口的各个层次,在该对象里面可以加入其它窗口对象。 根窗格。是在创建顶层容器后自动创建的,供Swing顶层 容器在后台使用,是顶层容器中做包含的最内层,通常无 法在这一层上做任何操作与处理。 分层窗格。加入分层窗格中的组件可以设置其图层层次, 且不会被内容窗格中的对象屏蔽。是其它窗格的父级。
23
12.2.1 Swing组件分类
3. 面板类JPanel 该类的构造函数: JPanel():创建一个面板,并且该面板组件的布局管理器 为FlowLayout()。 JPanel(LayoutManager layout):创建一个面板,且该 面板设置了指定的布局管理器。布局管理器管理在容器上 放置的组件,具体的内容会在12.4节详细介绍。
14
12.2.1 Swing组件分类
15
12.2.1 Swing组件分类
2. 框架类JFrame 是Java应用程序的顶层容器。 JFrame是java.awt.Frame的扩展版本,是一个window 子类,在使用Swing类库实现用户图形接口,必须继承该 类。 JFrame容器包括窗口标题、窗口外观、窗口边界、调整 窗口大小的图标、关闭和最小化窗口的图标。并且可以直 接在容器上添加组件,如按钮、文本等。
24
12.2.1 Swing组件分类
3. 面板类JPanel 常用方法:
JPanel默认的布局管理器是FlowLayout,可以使用 setLayout()方法改变其默认布局。 也可以采用包含它的容器不同的布局管理器。
25
例App12_2
在框架中加入面板
26
例App12_2
在框架中加入面板
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
第12章 图形界面设计
本章主要内容
12.1 图形用户界面设计 12.2 图形用户界面工具包—Swing 12.3 创建组件 12.4 布局管理器
2
12.1 图形用户界面设计
图形用户界面(Graphics User Interface,GUI) 用图形的方式,借助菜单。按钮等标准界面元素 和鼠标操作,帮助用户方便地向计算机系统发出 指令、启动操作,并将系统运行的结果同样以图 形方式显示给用户的技术。 Java的GUI程序设计是Java程序设计的基础。
10
12.2.1 Swing组件分类
一般独立应用程序主要是要框架JFrame作为容器, 在JFrame上通过放置JPanel面板来控制图形界 面的布局; 如果应用到浏览器中,则主要使用JApplet来做容 器。JApplet是一个能够嵌入到浏览器中运行的特 殊容器。
11
12.2.1 Swing组件分类
31
12.2.2 颜色类、字体类、图像图标类
2.字体类Font 用来规范组件所用的字体样式、大小与字形等。 构造方法: Font (String font_name, int style, int size)
字体名称 字形样式:PLAIN 、BOLD、ITALIC
字号大小
32
12.2.2 颜色类、字体类、图像图标类
// 为把它缩小点,先要取出这个Icon的image ,然后缩放到合适的大小
Image smallImage = image.getScaledInstance(30,20,Image.SCALE_FAST); // 再由修改后的Image来生成合适的Icon ImageIcon smallIcon = new ImageIcon(smallImage); // 最后设置它为按钮的图片 JButton iconButton = new JButton(smallIcon);
5
12.2图形用户界面工具包—Swing
Java图形用户界面的基本元素包括:
用户界面组件(组件类) 事件处理模块(事件类) 图形和图像工具(图形类、图像类) 布局管理器(布局类)
它们主要都在javax.swing包中,Swing是Java 包的一部分。
6
7
12.2.1 Swing组件分类
18
例App12_1
辅助类
组件类
19
例App12_1
为什么在该实例中被没有显示背景 色? JFrame默认采用了FlowLayout布局 管理器,你的组件在该布局管理器 中被塞满整个frame,挡住了背景。 就是说,实际上JFrame还是有背景 的一般用JFrame的时候要初始化一 个JPanel,把组件放在JPanel里, 然后把JPanel放到JFrame里,这样 可以较好的控制组建位置等其他的 东西。在这种方式下直接给JPanel 设置setBackground就可以一直看 到背景了
组件:构成图形用户界面的各种元素。 构建图形用户界面的类可以分成三组:
容器类(container class) 辅助类(helper class) 组件类(component class)。
8
12.2.1 Swing组件分类
容器类 容器类组件中可以包含其他组件,也可以包含其他容器。 容器又分为两种:顶层容器和非顶层容器。 顶层容器是可以独立的窗口,Swing的顶层容器有 JFrame、JApplet和JDialog等。 非顶层容器,不是独立的窗口,它们必须位于窗口之内, 非顶层容器包括JPanel及JScrollPanel等。
13
12.2.1 Swing组件分类
菜单栏。菜单栏被添加到分层窗格的顶部。是可选的。 内容窗格。是分层窗格中的某一层,是一个JPanel对象, 在窗体中起着工作区的作用。可以放置大部分的可见组件。 玻璃窗格。主要用来产生绘图效果,以及用来触发窗口程 序的各种事件。玻璃窗格浮在最上面,默认情况下是隐藏 的。
Font类的成员方法 public string getName():获得字体的名称 public int getStyle():获得字体的样式
public int getSize():获得字体的大小
public boolean isPlain():若字体是正常型,则返回true public boolean isBold():若字体是粗体,则返回true
4
12.1 图形用户界面设计
AWT 和 Swing 是 Java 设计 GUI 用户界面的基础. 与AWT 的重量级组件不同, Swing 中大部分是轻量级组 件。 正是这个原因, Swing 几乎无所不能, 不但有各式各 样先进的组件, 而且更为美观易用.所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。 但是因为 Swing 是架构在 AWT 之上的, 没有 AWT 就没 有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。 但是,最好不要二者 混用——除开显示风格不同不说,还很 可能造成层次 (Z-Order) 错乱
3
12.1 图形用户界面设计
Java提供的两个处理图形用户界面的类库: Java. awt包和javax. swing包
Sun已经提供了一个跨平台 GUI开发工具包java.awt(抽 象窗口工具箱)
Sun又开发了一个新的 GUI开发工具包javax.swing 解决了awt中存在的本地化 问题
5.图形界面设计的步骤 1. 创建组件(Component):创建组成界面的各种元素,如 按钮、文本框等。 2. 指定布局(Layout):根据具体需要排列界面上各元素的 位置关系。 3. 响应事件(Event):定义图形用户界面的事件和各界面元 素对不同事件的响应,从而实现图形用户界面与用户的 交互功能。
16
12.2.1 Swing组件分类
构造方法: public JFrame() throws HeadlessException。 创建了一个新的容器窗口,默认该窗口是不可见的。 public JFrame(String title) throws HeadlessException 创建一个新的容器窗口,通过方法的参数设置窗口标题, 该窗口默认是不可见的。
public boolean isItalic() :若字体是斜体,则返回true
33
12.2.2 颜色类、字体类、图像图标类
3.图标图像类ImageIcon
Java语言使用javax.swing.ImageIcon类表示图标。 表12.12给出了ImageIcon类的常用构造方法,表 12.13给出了ImageIcon类的常用方法。
Fra Baidu bibliotek
17
12.2.1 Swing组件分类
该类的常用方法(P203-204) getContentPane() 该方法返回一个框架对象,使用该框架对象来添加组件,如 增加按钮、菜单、工具栏、列表框等组件。 setSize(int width ,int hight) 设置窗口尺寸、窗口大小以像素为单位计算。 getJMenuBar() 返回此窗体上设置的菜单栏。 setJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏。 setIconImage(Image image) 设置要作为此窗口图标显示的图像。
34
Java中Image类与ImageIcon类的区别
Image类一般尺寸过大,不适合作ImageIcon类。
ImageIcon imageIcon = new ImageIcon(“duke.gif”);
// Icon由图片文件形成 Image image = imageIcon.getImage(); // 但这个图片太大不适合做Icon
27
例App12_2
在框架中加入面板
28
12.2.1 Swing组件分类
4. 组件类 又称控制组件(控件),它里面不能包含其他组件。 作用:完成与用户的交互,包括接收用户的命令、接收用 户输入的文本或用户的选择、向用户显示文本或图形。 常用控件:命令类、选择类、文字处理类等。
29
12.2.1 Swing组件分类
命令提示符环境
20
例App12_1_1
21
例App12_1_1
例App12_1_2
22
12.2.1 Swing组件分类
3. 面板类JPanel 面板是一种没有标题栏、没有边框的中间层容器,在该容 器上可以放置其他组件如单选按钮、列表框等。还可以包 含其他容器,如一个新的JPanel对象,从而方便地实现容 器的嵌套。 在面板创建后是无法单独显示的。面板不是顶层容器,必 须放到其他容器内,也可以放入另一个面板内。必须放在 JFrame或Applet这样的顶层窗口中才可以显示。 一个界面只可以有一个JFrame窗体组件,但可以有多个 JPanel面板组件
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)
12
12.2.1 Swing组件分类
1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”,各个层的关 系如教材P202 图12.2所示。 顶层容器。是一个窗口容器对象,该对象包含了Swing窗 口的各个层次,在该对象里面可以加入其它窗口对象。 根窗格。是在创建顶层容器后自动创建的,供Swing顶层 容器在后台使用,是顶层容器中做包含的最内层,通常无 法在这一层上做任何操作与处理。 分层窗格。加入分层窗格中的组件可以设置其图层层次, 且不会被内容窗格中的对象屏蔽。是其它窗格的父级。
23
12.2.1 Swing组件分类
3. 面板类JPanel 该类的构造函数: JPanel():创建一个面板,并且该面板组件的布局管理器 为FlowLayout()。 JPanel(LayoutManager layout):创建一个面板,且该 面板设置了指定的布局管理器。布局管理器管理在容器上 放置的组件,具体的内容会在12.4节详细介绍。
14
12.2.1 Swing组件分类
15
12.2.1 Swing组件分类
2. 框架类JFrame 是Java应用程序的顶层容器。 JFrame是java.awt.Frame的扩展版本,是一个window 子类,在使用Swing类库实现用户图形接口,必须继承该 类。 JFrame容器包括窗口标题、窗口外观、窗口边界、调整 窗口大小的图标、关闭和最小化窗口的图标。并且可以直 接在容器上添加组件,如按钮、文本等。
24
12.2.1 Swing组件分类
3. 面板类JPanel 常用方法:
JPanel默认的布局管理器是FlowLayout,可以使用 setLayout()方法改变其默认布局。 也可以采用包含它的容器不同的布局管理器。
25
例App12_2
在框架中加入面板
26
例App12_2
在框架中加入面板
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
第12章 图形界面设计
本章主要内容
12.1 图形用户界面设计 12.2 图形用户界面工具包—Swing 12.3 创建组件 12.4 布局管理器
2
12.1 图形用户界面设计
图形用户界面(Graphics User Interface,GUI) 用图形的方式,借助菜单。按钮等标准界面元素 和鼠标操作,帮助用户方便地向计算机系统发出 指令、启动操作,并将系统运行的结果同样以图 形方式显示给用户的技术。 Java的GUI程序设计是Java程序设计的基础。
10
12.2.1 Swing组件分类
一般独立应用程序主要是要框架JFrame作为容器, 在JFrame上通过放置JPanel面板来控制图形界 面的布局; 如果应用到浏览器中,则主要使用JApplet来做容 器。JApplet是一个能够嵌入到浏览器中运行的特 殊容器。
11
12.2.1 Swing组件分类
31
12.2.2 颜色类、字体类、图像图标类
2.字体类Font 用来规范组件所用的字体样式、大小与字形等。 构造方法: Font (String font_name, int style, int size)
字体名称 字形样式:PLAIN 、BOLD、ITALIC
字号大小
32
12.2.2 颜色类、字体类、图像图标类
// 为把它缩小点,先要取出这个Icon的image ,然后缩放到合适的大小
Image smallImage = image.getScaledInstance(30,20,Image.SCALE_FAST); // 再由修改后的Image来生成合适的Icon ImageIcon smallIcon = new ImageIcon(smallImage); // 最后设置它为按钮的图片 JButton iconButton = new JButton(smallIcon);
5
12.2图形用户界面工具包—Swing
Java图形用户界面的基本元素包括:
用户界面组件(组件类) 事件处理模块(事件类) 图形和图像工具(图形类、图像类) 布局管理器(布局类)
它们主要都在javax.swing包中,Swing是Java 包的一部分。
6
7
12.2.1 Swing组件分类
18
例App12_1
辅助类
组件类
19
例App12_1
为什么在该实例中被没有显示背景 色? JFrame默认采用了FlowLayout布局 管理器,你的组件在该布局管理器 中被塞满整个frame,挡住了背景。 就是说,实际上JFrame还是有背景 的一般用JFrame的时候要初始化一 个JPanel,把组件放在JPanel里, 然后把JPanel放到JFrame里,这样 可以较好的控制组建位置等其他的 东西。在这种方式下直接给JPanel 设置setBackground就可以一直看 到背景了
组件:构成图形用户界面的各种元素。 构建图形用户界面的类可以分成三组:
容器类(container class) 辅助类(helper class) 组件类(component class)。
8
12.2.1 Swing组件分类
容器类 容器类组件中可以包含其他组件,也可以包含其他容器。 容器又分为两种:顶层容器和非顶层容器。 顶层容器是可以独立的窗口,Swing的顶层容器有 JFrame、JApplet和JDialog等。 非顶层容器,不是独立的窗口,它们必须位于窗口之内, 非顶层容器包括JPanel及JScrollPanel等。
13
12.2.1 Swing组件分类
菜单栏。菜单栏被添加到分层窗格的顶部。是可选的。 内容窗格。是分层窗格中的某一层,是一个JPanel对象, 在窗体中起着工作区的作用。可以放置大部分的可见组件。 玻璃窗格。主要用来产生绘图效果,以及用来触发窗口程 序的各种事件。玻璃窗格浮在最上面,默认情况下是隐藏 的。
Font类的成员方法 public string getName():获得字体的名称 public int getStyle():获得字体的样式
public int getSize():获得字体的大小
public boolean isPlain():若字体是正常型,则返回true public boolean isBold():若字体是粗体,则返回true
4
12.1 图形用户界面设计
AWT 和 Swing 是 Java 设计 GUI 用户界面的基础. 与AWT 的重量级组件不同, Swing 中大部分是轻量级组 件。 正是这个原因, Swing 几乎无所不能, 不但有各式各 样先进的组件, 而且更为美观易用.所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。 但是因为 Swing 是架构在 AWT 之上的, 没有 AWT 就没 有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。 但是,最好不要二者 混用——除开显示风格不同不说,还很 可能造成层次 (Z-Order) 错乱
3
12.1 图形用户界面设计
Java提供的两个处理图形用户界面的类库: Java. awt包和javax. swing包
Sun已经提供了一个跨平台 GUI开发工具包java.awt(抽 象窗口工具箱)
Sun又开发了一个新的 GUI开发工具包javax.swing 解决了awt中存在的本地化 问题
5.图形界面设计的步骤 1. 创建组件(Component):创建组成界面的各种元素,如 按钮、文本框等。 2. 指定布局(Layout):根据具体需要排列界面上各元素的 位置关系。 3. 响应事件(Event):定义图形用户界面的事件和各界面元 素对不同事件的响应,从而实现图形用户界面与用户的 交互功能。
16
12.2.1 Swing组件分类
构造方法: public JFrame() throws HeadlessException。 创建了一个新的容器窗口,默认该窗口是不可见的。 public JFrame(String title) throws HeadlessException 创建一个新的容器窗口,通过方法的参数设置窗口标题, 该窗口默认是不可见的。
public boolean isItalic() :若字体是斜体,则返回true
33
12.2.2 颜色类、字体类、图像图标类
3.图标图像类ImageIcon
Java语言使用javax.swing.ImageIcon类表示图标。 表12.12给出了ImageIcon类的常用构造方法,表 12.13给出了ImageIcon类的常用方法。
Fra Baidu bibliotek
17
12.2.1 Swing组件分类
该类的常用方法(P203-204) getContentPane() 该方法返回一个框架对象,使用该框架对象来添加组件,如 增加按钮、菜单、工具栏、列表框等组件。 setSize(int width ,int hight) 设置窗口尺寸、窗口大小以像素为单位计算。 getJMenuBar() 返回此窗体上设置的菜单栏。 setJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏。 setIconImage(Image image) 设置要作为此窗口图标显示的图像。
34
Java中Image类与ImageIcon类的区别
Image类一般尺寸过大,不适合作ImageIcon类。
ImageIcon imageIcon = new ImageIcon(“duke.gif”);
// Icon由图片文件形成 Image image = imageIcon.getImage(); // 但这个图片太大不适合做Icon
27
例App12_2
在框架中加入面板
28
12.2.1 Swing组件分类
4. 组件类 又称控制组件(控件),它里面不能包含其他组件。 作用:完成与用户的交互,包括接收用户的命令、接收用 户输入的文本或用户的选择、向用户显示文本或图形。 常用控件:命令类、选择类、文字处理类等。
29
12.2.1 Swing组件分类
命令提示符环境
20
例App12_1_1
21
例App12_1_1
例App12_1_2
22
12.2.1 Swing组件分类
3. 面板类JPanel 面板是一种没有标题栏、没有边框的中间层容器,在该容 器上可以放置其他组件如单选按钮、列表框等。还可以包 含其他容器,如一个新的JPanel对象,从而方便地实现容 器的嵌套。 在面板创建后是无法单独显示的。面板不是顶层容器,必 须放到其他容器内,也可以放入另一个面板内。必须放在 JFrame或Applet这样的顶层窗口中才可以显示。 一个界面只可以有一个JFrame窗体组件,但可以有多个 JPanel面板组件
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)