《创建一个图形界面应用程序.ppt》由会员分享,可在线阅读,更多相关《创建一个图形界面应用程序.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1313章章 创建一个图形界面应用程序创建一个图形界面应用程序到目前为止,已经学习了到目前为止,已经学习了Java面向对象语言的基本语法和面向对象语言的基本语法和面向对象的概念。从本章开始,将应用这些面向对象的面向对象的概念。从本章开始,将应用这些面向对象的知识,学习如何创建带图形界面的知识,学习如何创建带图形界面的Java应用程序。在应用程序。在Java中,要编写带图形界面的程序,需要学习并掌握中,要编写带图形界面的程序,需要学习并掌握Swing工具包的应用。工具包的应用。13.1 Java Swing13.1 Java Swing简介简介Swing工具包是工具包是Java SE平台的一
2、部分,提供了一系列丰平台的一部分,提供了一系列丰富的富的GUI组件,用来构建图形界面的应用程序。组件,用来构建图形界面的应用程序。Swing工具包包含丰富的组件集合,用于构建工具包包含丰富的组件集合,用于构建GUI和为和为Java应应用程序添加交互性。用程序添加交互性。Swing包含从现代工具包所能获得包含从现代工具包所能获得的所有组件:表控件、列表控件、树控件、按钮和标签。的所有组件:表控件、列表控件、树控件、按钮和标签。13.1.1 13.1.1 什么是什么是Swing?Swing?Swing是是Java平台提供的图形界面程序的开发工具包,包平台提供的图形界面程序的开发工具包,包含很多与界
3、面相关的类和接口,是含很多与界面相关的类和接口,是JFC的重要组成部分。的重要组成部分。JFC是是Java基础类的简称,它包括一组用于构建图形用基础类的简称,它包括一组用于构建图形用户接口(户接口(GUI)并添加丰富图形功能以及交互性给)并添加丰富图形功能以及交互性给Java应用程序的特性。应用程序的特性。Java基础类的特性如表所示。基础类的特性如表所示。13.1.2 Swing13.1.2 Swing特性特性Swing是是Java基础类(基础类(Java Foundation Classes,JFC)的一部分。)的一部分。JFC还包含对还包含对GUI程序很重要的其他特性,例如添加丰富的图形
4、功能,程序很重要的其他特性,例如添加丰富的图形功能,以及创建可以用不同语言编写、可以由不同输入设备的用户使用的以及创建可以用不同语言编写、可以由不同输入设备的用户使用的程序。程序。1Swing GUI组件组件2Java 2D API3插件式程序外观支持(插件式程序外观支持(look and feel)4数据传递数据传递5国际化国际化6易访问性易访问性API7撤销框架撤销框架API8.灵活的部署支持灵活的部署支持13.2 13.2 创建一个简单的图形界面程序创建一个简单的图形界面程序Java Swing提供了如此丰富的提供了如此丰富的GUI类库,以及强大的图形类库,以及强大的图形界面程序的开发功
5、能,使得程序员可以轻松开发复杂的界面程序的开发功能,使得程序员可以轻松开发复杂的图形界面程序。本节通过使用图形界面程序。本节通过使用Swing创建一个简单的图创建一个简单的图形界面程序,帮助读者快速了解形界面程序,帮助读者快速了解Java桌面程序开发步骤,桌面程序开发步骤,掌握简单的图形界面程序开发流程。掌握简单的图形界面程序开发流程。13.2.1 HelloWorldSwing.java13.2.1 HelloWorldSwing.java界面程序示例界面程序示例图形界面程序,必须有一个用于显示的窗体。在图形界面程序,必须有一个用于显示的窗体。在Swing中,中,代表窗体的类是,即位于代表窗
6、体的类是,即位于javax.swing包中的包中的JFrame类。类。程序中的其他组件必须包含在程序中的其他组件必须包含在JFrame窗体上才能被显窗体上才能被显示在屏幕上,因此也称示在屏幕上,因此也称JFrame类为容器类,它能象一类为容器类,它能象一个容器一样容纳别的组件。个容器一样容纳别的组件。13.2.2 13.2.2 编译并运行编译并运行HelloWorldSwingHelloWorldSwing程序程序源文件创建并正确保存以后,需要将其编译为二进制的字源文件创建并正确保存以后,需要将其编译为二进制的字节码文件,才能被计算机识别并执行。使用下面的命令节码文件,才能被计算机识别并执行。
7、使用下面的命令编译该程序:编译该程序:javac d.HelloWorldSwing.java13.3 13.3 使用使用SwingSwing顶层容器顶层容器要理解上一小节程序代码的含义,需要了解一些要理解上一小节程序代码的含义,需要了解一些Swing的的背景知识。其中首先需要了解的是背景知识。其中首先需要了解的是Swing顶层容器。所顶层容器。所谓顶层容器,指的是容纳其他容器的容器组件,包括谓顶层容器,指的是容纳其他容器的容器组件,包括JFrame类、类、JWindow类、类、JDialog类和类和JApplet等。本等。本章主要对常用的章主要对常用的JFrame类和类和JDialog类作一
8、介绍。类作一介绍。13.3.1 Swing13.3.1 Swing中的顶层容器类中的顶层容器类Swing提供三个顶层容器类:提供三个顶层容器类:JFrame、JDialog和和JApplet。13.3.2 13.3.2 顶层容器和容器层级顶层容器和容器层级每一个使用每一个使用Swing组件的程序都至少有一个顶层容器。这组件的程序都至少有一个顶层容器。这个顶层容器是容器层级的根,而容器层级包含所有出现个顶层容器是容器层级的根,而容器层级包含所有出现在顶层容器中的在顶层容器中的Swing组件。下面图是上面示例的图形组件。下面图是上面示例的图形用户接口(用户接口(GUI)的容器层级:)的容器层级:1
9、3.3.3 13.3.3 向内容面板中添加组件向内容面板中添加组件上一小节提到,作为一个上一小节提到,作为一个Swing程序的原则,每一个顶层程序的原则,每一个顶层容器都有一个内容面板(容器都有一个内容面板(content pane),各类可视化),各类可视化组件不直接放到顶层容器中,而是放在顶层容器的内容组件不直接放到顶层容器中,而是放在顶层容器的内容面板中。下面这行代码是在上节的示例中,用来获得一面板中。下面这行代码是在上节的示例中,用来获得一个窗体的内容面板并向其添加黄色的标签的代码:个窗体的内容面板并向其添加黄色的标签的代码:frame.getContentPane().add(yel
10、lowLabel,BorderLayout.CENTER);13.3.4 13.3.4 给窗体给窗体添加一个菜单栏添加一个菜单栏从理论上说,所有的顶层容器都可以拥有一个菜单栏。然从理论上说,所有的顶层容器都可以拥有一个菜单栏。然而在实际应用中,菜单栏通常只出现在窗体和而在实际应用中,菜单栏通常只出现在窗体和applet中。中。要添加一个菜单栏到一个顶层容器,需要创建一个要添加一个菜单栏到一个顶层容器,需要创建一个JMenuBar对象,它由菜单组成,然后调用对象,它由菜单组成,然后调用setJMenuBar()方法将其添加到容器中。在上面的方法将其添加到容器中。在上面的TopLevelDemo示
11、示例中,使用下面的代码来将一个菜单栏添加到其窗体中。例中,使用下面的代码来将一个菜单栏添加到其窗体中。frame.setJMenuBar(greenMenuBar);13.3.5 13.3.5 根面板根面板每一个顶层容器都依赖于一个隐含的中间容器,称为每一个顶层容器都依赖于一个隐含的中间容器,称为“根面板(根面板(root pane)”。根面板管理着内容面板和菜单栏,连同另两个容器。使用。根面板管理着内容面板和菜单栏,连同另两个容器。使用Swing组件的话程序员通常不需要了解根面板。然而,如果程序员组件的话程序员通常不需要了解根面板。然而,如果程序员需要截取鼠标操作或在多个组件上绘制,就应该认
12、识根面板。下面需要截取鼠标操作或在多个组件上绘制,就应该认识根面板。下面图是提供给一个窗体(以及每一个其他顶层容器)的一个根面板的图是提供给一个窗体(以及每一个其他顶层容器)的一个根面板的组件列表:组件列表:13.4 13.4 使用使用JFrameJFrame类创建图形界面程序窗体类创建图形界面程序窗体一个窗体是一个窗体是JFrame类的一个实例,是带有边框、标题并支类的一个实例,是带有边框、标题并支持关闭和最小最大化按钮组件的一个窗口。带有持关闭和最小最大化按钮组件的一个窗口。带有GUI界界面的应用程序一般最少要包含一个窗体。要创建一个依面的应用程序一般最少要包含一个窗体。要创建一个依赖于另
13、一个窗口的窗口(例如当另一个窗口被最小化时赖于另一个窗口的窗口(例如当另一个窗口被最小化时它也消失),要使用一个对话框来代替窗体。要创建一它也消失),要使用一个对话框来代替窗体。要创建一个在另一个窗口内出现的窗口,使用内部窗体。个在另一个窗口内出现的窗口,使用内部窗体。13.4.1 13.4.1 创建并显示一个窗体创建并显示一个窗体程序窗体是一个顶层窗口,带有标题和边框。窗体的大小包括边框的尺程序窗体是一个顶层窗口,带有标题和边框。窗体的大小包括边框的尺寸。边框的尺寸可以使用寸。边框的尺寸可以使用getInsets方法获得。因为边框被包括在窗方法获得。因为边框被包括在窗体的总体大小内,所以边框
14、隐藏了窗体的一部分,因而能渲染和显体的总体大小内,所以边框隐藏了窗体的一部分,因而能渲染和显示子组件的窗体的可用区域为左上角顶点在(示子组件的窗体的可用区域为左上角顶点在(insets.left,insets.top)、大小为宽)、大小为宽width-(insets.left+insets.right)高高height (insets.top+insets.botton)。图是由程序。图是由程序FrameDemo.java创建的一个极为简单的窗口的截图:创建的一个极为简单的窗口的截图:13.4.2 13.4.2 创建窗体的一般步骤创建窗体的一般步骤使用使用Java提供的提供的JFrame类,创
15、建一个应用程序的窗体非类,创建一个应用程序的窗体非常简单,只需要生成一个常简单,只需要生成一个JFrame类的对象,或者从类的对象,或者从JFrame类派生出一个新的类,稍作改动即可,这就是类派生出一个新的类,稍作改动即可,这就是使用面向对象语言的好处。使用面向对象语言的好处。13.4.3 13.4.3 指定窗口装饰指定窗口装饰窗口装饰,指的是窗口的外观样式。默认情况下,窗口装窗口装饰,指的是窗口的外观样式。默认情况下,窗口装饰由本地窗口系统提供。不过,可以请求程序外观饰由本地窗口系统提供。不过,可以请求程序外观(look-and-feel)为窗体提供装饰。还可以指定窗体根)为窗体提供装饰。还
16、可以指定窗体根本就没有窗口装饰(这是可用于窗体的一个特性),或本就没有窗口装饰(这是可用于窗体的一个特性),或者提供自己的装饰,或者使用全屏独占模式。者提供自己的装饰,或者使用全屏独占模式。13.4.4 13.4.4 响应窗口关闭事件响应窗口关闭事件默认情况下,当用户关闭屏幕上的一个窗体时,窗体被隐默认情况下,当用户关闭屏幕上的一个窗体时,窗体被隐藏。虽然不可见,但窗体仍然是存在的,并且程序可以藏。虽然不可见,但窗体仍然是存在的,并且程序可以再一次使其可见。如果想改变这种默认的形为,那么需再一次使其可见。如果想改变这种默认的形为,那么需要注册一个窗口监听器来处理窗口关闭事件,或者也可要注册一个
17、窗口监听器来处理窗口关闭事件,或者也可以使用以使用setDefaultCloseOperation()方法指定默认的关方法指定默认的关闭行为。甚至于两个方法都可以用。闭行为。甚至于两个方法都可以用。13.4.5 13.4.5 窗体窗体APIAPI下面的表下面的表13.2、13.3和表和表13.4列出了经常使用的列出了经常使用的JFrame类的构造器和方类的构造器和方法。其他还有一些方法是法。其他还有一些方法是JFrame从、和类继承过来的。从、和类继承过来的。13.5 13.5 小结小结本章学习如何使用本章学习如何使用Swing工具包创建带图形界面的工具包创建带图形界面的Java应应用程序。在学习本章时,重点理解顶层窗口的概念,特用程序。在学习本章时,重点理解顶层窗口的概念,特别是内容面板。因为别是内容面板。因为Java应用程序中要求其他组件都要应用程序中要求其他组件都要位于内容面板之上。在学习窗体及窗体事件响应时可能位于内容面板之上。在学习窗体及窗体事件响应时可能会有些理解上的困难,这不用担心。只要了解其工作原会有些理解上的困难,这不用担心。只要了解其工作原理即可,在实际开发中,集成开发工具会给程序员完成理即可,在实际开发中,集成开发工具会给程序员完成很多基础性的工作的。很多基础性的工作的。
限制150内