10 图形用户界面.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

四川机电职业技术学院 http: // 6.1 主控界面设计、编程 信息工程系 向模军 Tel: QQ:
Java 语言程序设计 第 6 章 Java 图形与事件处理. 本章主要内容: 6.1 图形与图形的描绘 6.1 图形与图形的描绘 图形绘制特点及绘图工具 paint() 图形绘制特点及绘图工具 paint() Graphics 类 Graphics.
广州市小学信息技术教学同步资源 第一册 第二章 第六节 《 Window窗口》 广州市荔湾区西华路小学 董绮珊.
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
图形界面设计 福州大学阳光学院 张海歆.
项目2 字符格式和段落编排 2017年3月7日6时54分.
Java程序设计 常州信息职业技术学院(CCIT) 软件学院
視窗程式設計 2. 視窗版面配置 Chih Hung Wang Reference:
6.5 图形界面的布局设计 每一个容器组件都有一个默认的布局管理方式,也可以用setLayout方法来设置其他布局管理器。一旦确定了布局管理方式,容器组件就可以用add方法加入组件。 布局管理器用来确定组件在容器中的位置和大小,AWT中定义了布局管理器接口LayoutManager的实现类来实现此功能。
UI(用户界面)集训班 Illustrator 高级班.
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
第八讲 图形用户界面与事件处理 1、使用AWT(Abstract Window Toolkit)组件
4.1 概述 4.2 AWT 与 Swing组件 4.3 事件处理 4.4 容器与布局管理器 4.5 对话框 4.6 菜单
第 18 章 圖形使用者介面.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
第14章 c++中的代码重用.
在PHP和MYSQL中实现完美的中文显示
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之一).
Java语言程序设计 马 皓
Java程序设计 第10章 图形用户界面.
Ch02 視窗Swing套件 物件導向系統實務.
Java语言程序设计-图形用户界面设计(2)
2018/11/11 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
GUI事件处理 主讲:赖国荣 QQ:
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Java Applet 介绍.
Java语言程序设计 第六部分 Java图形用户界面.
SWING 2018/11/23.
第二讲 搭建Java Web开发环境 主讲人:孙娜
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
大学计算机基础 典型案例之一 构建FPT服务器.
第8章 图形用户界面的设计与实现 本章介绍Java基本的图形编程知识,包括窗口的显示、文字和图像的显示、事件处理以及图形用户界面中常用的组件等内容。 本章要点 8.1 Java图形用户界面概述 8.2 标准组件 8.3 简单图形用户界面 8.4 Java事件处理 8.5 布局管理 8.6.
JAVA 2 新觀念教本 ---邁向SCJP專業認證--- 易瓏資訊 林新德 著.
走进编程 程序的顺序结构(二).
辅导课程六.
Java语言程序设计 第八部分 Applet小程序.
SWT/Jface 简介 Java GUI图形用户界面.
Java程序设计 第12章 图形用户界面设计入门.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
Ch04 事件處理 物件導向系統實務.
第4章 Java图形用户界面设计.
CH04 視窗中元件排排坐 物件導向系統實務.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
事件處理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第4章 Java图形用户界面设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
4.4 布局管理器.
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Chapter 18 使用GRASP的对象设计示例.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第十二章 JFC/Swing 概述  Swing组件  Swing应用程序结构  JComponent类.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

10 图形用户界面

10.0 本章内容 1 图形用户界面概述 2 几个常用容器及组件 3 布局管理器 4 事件处理 5 其它常用组件 6 其它常用中间容器 1 图形用户界面概述 2 几个常用容器及组件 3 布局管理器 4 事件处理 5 其它常用组件 6 其它常用中间容器 7 对话框 8 绘图

大部分交互式应用具有GUI外观。Java的外观由GUI组件构成,例如窗口,菜单,按钮,滚动条,列表框等。 10.1 图形用户界面概述 大部分交互式应用具有GUI外观。Java的外观由GUI组件构成,例如窗口,菜单,按钮,滚动条,列表框等。 Java早期用AWT开发图形用户界面。AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,其中包含了一套与本地操作系统图形库交互的接口。 目前组件实现手段有两种:AWT和Swing,分别定义在java.awt和javax.swing包中。 利用AWT来构建图形用户界面时,实际上是利用接口调用操作系统所支持的图形库。由于不同操作系统的图形库是有区别的,在一个平台上存在的功能在另外一个平台上可能不存在。

10.1 图形用户界面概述 Componen的层次关系 Java中构成图形用户界面的各种元素,称为组件(Component)。 组件分为容器(Container)类和非容器类组件两大类 。 容器又分为顶层容器和非顶层容器两大类。 AWT组件一般都是Component的直接子类,是重量级组件,严重地依赖操作系统的实现。 容器类(Container)也是Component类的子类,它可以容纳其它组件,提供层次化的复杂外观。 Window类和Panel类是容器类的子类,GUI设计的一个主要工作就是容器中“摆放”组件。

Swing组件层次关系

10.2 常用容器与组件(Frame &Panel) Component的两个重要子类Frame和Panel。 Frame: Window类的直接子类;初始化为不可见的,可使用setVisible(true)设置为可见的。默认布局为BorderLayout. Panel: 不是顶层窗口,必须位于其他容器内;默认布局为FlowLayout. 示例:TestFrame.java,TestFramewithPanel.java JFrame窗体

JFrame窗体(两个显示示例) 方法1:直接在main()方法中运用JFrame。 TestFrame0.java 方法2:应用JFrame派生类MyFrame。 TestFrame2.java

其他Component子类 下面是部分awt组件列表 Button Canvas Label Choice Checkbox List TextArea TextField Scrollbar FileDialog Container ScrollPane Window Panel Frame Dialog Applet 见awt组件范例(AWTExample.java)

GUI编程过程 设计和实现图形用户界面的工作主要有以下几点。 (1)创建组件(Component): 创建组成界面的各种元素,如按钮、文本框等。 (2)指定布局(Layout): 根据具体需要排列它们的位置关系。 (3)响应事件(Event): 定义图形用户界面的事件和各界面元素对不同事件的响应, 从而实现图形用户界面与用户的交互功能。

10.3 布局管理LayoutManager 由于AWT组件是利用同级件机制借助于操作系统基础视窗系统的组件来实现的,那么应用的外观在不同平台之间移植可能会导致一个糟糕的外观。 Java引入布局管理器模式,把组件的布局任务交给布局管理器,这个模式不主张明确指出组件的大小和位置,而主张让编程人员选择布局理器,提供布置策略,运行时,再由布局管理器对象确定容器中组件的具体大小和位置。 LayoutManager接口定义了布局管理器的“工作”。

常用布局管理器 FlowLayout:流布局管理器 GridLayout:网格布局管理器 BorderLayout:方位布局管理器 五种常用布局管理器: FlowLayout:流布局管理器 GridLayout:网格布局管理器 BorderLayout:方位布局管理器 CardLayout:卡片布局管理器 BoxLayout:盒式布局管理器 使用Container类的 public void setLayout(LayoutManager lm) 方法设置某种布局策略。

布局的示例 FlowLayout是Panel及Applet默认使用的布局管理器。 TestFlowLayout.java BorderLayout是Frame和Dialog默认的。 TestBorderLayout.java FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行 默认对齐方式为居中对齐 不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式 前面的示例是用AWT组件实现的,请读者自行改为用Swing组件实现.

FlowLayout布局管理器 new FlowLayout(FlowLayout.RIGHT,20,40); 右对齐,组件之间水平间距20个像素,竖直间距40个像素; new FlowLayout(FlowLayout.LEFT); 左对齐,水平和竖直间距为缺省值:5; new FlowLayout(); 使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;

BorderLayout 布局管理器 Center BorderLayout是Frame类的默认布局管理器 注意:每个区域只能加入一个组件, 如加入多个,则先前加入的 组件会被遗弃 North South West Eest Center

GridLayout 布局管理器 GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等. 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下. 在GridLayout构造方法中指定分割的行数和列数. new GridLayout(3,4); 示例:TestGridLayout.java

布局管理器总结 如果为容器选用布局管理器,那么容器中组件的位置和大小完全有布局管理器决定。 因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。 如果用户确实需要亲自设置组件大小或位置,可以通过setLayout(null)方法不为容器选用任何布局管理器。这样可以通过编程来实现组件布局。 通过编码调用组件的 setLocation(), setSize(), 或 setBounds()方法来实现布局,但是编码工作量大,一般使用IDE来实现一个“所见即所得”的GUI画面,然后由IDE辅助生成代码。 每个容器都有一个默认的布局管理器。

布局管理器总结 JFrame JFrame是一个顶级窗口。 JFrame的缺省布局管理器为BorderLayout。 JPanel JPanel的缺省布局管理器为FlowLayout。 当把JPanel作为一个组件添加到某个容器中后,该JPanel仍然可以有自己的布局管理器。因此,可以利用JPanel使得BorderLayout中某个区域显示多个组件。 综合应用示例:例10-4TestGui.java,例10-5TestGui2.java

10.4 事件处理(事件及事件监听器) Java中的图形用户界面中,对于用户的鼠标、键盘操作发生反应,就必须进行事件处理。 10.4 事件处理(事件及事件监听器) Java中的图形用户界面中,对于用户的鼠标、键盘操作发生反应,就必须进行事件处理。 产生事件的对象是事件源。 这些鼠标、键盘操作等统称为事件(Event)。 对这些事件作出响应的程序,称为事件处理器(Event handler)。 Java的事件处理委托模型: 组件将事件处理的责任委托给特定的对象,当该组件发生指定的事件时,就通知所委托的对象,由这个对象来处理此事件。这个受委托的对象称为事件监听对象(eventlistener),每个组件都可根据需要指定(注册)一个或多个事件监听对象。

10.4 事件处理 (Java事件处理模型)

(1)给事件源填加监听器 addXXXListener() 事件处理设计要做3件事 事件编程中的几个要素: 事件类------继承于AWTEvent类 事件源-----可通过getSource()方法得到 事件监听器:针对特定事件的事件监听对象(自定义的类) 事件服务程序:事件产生时所执行的程序 (1)给事件源填加监听器 addXXXListener() (2)设计一个监听器的实现类,其含有实践服务的代码,其实现监听器中的事件服务方法。此称为事件服务类。 (3)用事件服务类创建一个对象,作为上述注册事件监听器的实参。

事件监听器框架是由Java系统本身完成的,它的消息响应方法形式是固定的形式,所以一定是多态调用方式. 10.4 事件处理(事件处理内容) 事件监听器框架是由Java系统本身完成的,它的消息响应方法形式是固定的形式,所以一定是多态调用方式. 又因为不同事件源产生多种多样的事件,Java系统把消息分了类,每类对应一个或几个特定的方法,定义在不同的接口中,我们只需要按规则实现接口中定义的方法就可以了。 Java图形界面处理的主要事件内容如表10.1所示。 依据设计实现的监听类的位置不同可以分为下面几种模式: (1)当前类是事件监听器类 (this对象去监听事件源) (2)外部类outclass是事件监听器类(outclass对象去监听事件源) (3)内部类是事件监听器类(内部类对象去监听事件源) (4)匿名类是事件监听器类(匿名类对象去监听事件源)

10.4 事件处理(在事件处理中使用内部类及匿名类) 10.4 事件处理(在事件处理中使用内部类及匿名类) 在Java事件处理程序中,由于与事件相关的事件监听器的类经常局限于一个类的内部,所以经常使用内部类。 可以方便地访问包装类的成员; 内部逻辑清晰; 该类不可以也不需要被其他类访问。 而且定义的内部类在事件处理中的使用就实例化一次(在其他地方不会用到该类,所以不需要类名),所以经常使用匿名类。

10.4 事件处理(事件适配器) 一个类实现一个接口,必须实现接口中的全部方法。 10.4 事件处理(事件适配器) 一个类实现一个接口,必须实现接口中的全部方法。 用实现接口的方法,例如WindowListener接口包括7个方法,即使一些方法不做任何事情,也得书写。 为简化编程,针对一些事件监听器接口定义了相应的实现类——事件适配器类(Adapter),在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情。

10.4 事件处理(事件适配器) 事件适配器包括如下几种: (1)ComponentAdapter(组件适配器); 10.4 事件处理(事件适配器) 事件适配器包括如下几种: (1)ComponentAdapter(组件适配器); (2)ContainerAdapter(容器适配器); (3)FocusAdapter(焦点适配器); (4)KeyAdapter(键盘适配器); (5)MouseAdapter(鼠标适配器); (6)MouseMotionAdapter(鼠标运动适配器); (7)WindowAdapter(窗口适配器)。 程序中可以继承事件适配器类,并只重写所需要的方法,而不用写那些空的方法体。 【例10-9】给窗口加鼠标事件,当按下鼠标时,退出应用程序. TestMouseEvent.java

10.5 其他常用组件 10.5.1 JCheckBox、JRadioButton 10.5.2 JComboBox 10.5.3 JList 10.5.4 JTable 参见相应的例子

10.7 对话框(概述) 对话框是常用的数据操作窗口,它和JFrame一样,都是顶层容器,可以独立显示。 对话框分为无模式和有模式两种情况。 10.7 对话框(概述) 对话框是常用的数据操作窗口,它和JFrame一样,都是顶层容器,可以独立显示。 对话框分为无模式和有模式两种情况。 无模式对话框含义是:当该对话框出现后,仍可切换到其它组件界面,进行相应操作,可以理解为“并行”操作; 有模式对话框含义是:当该对话框出现后,不能切换到其它组件界面,只能该界面操作结束后,才能进行其它组件界面的操作,可以理解为“串行”操作。

10.7 对话框(JDialog类) 对话框被封装在JDialog类中 JDialog常用方法如下。 • JDialog(Frame owner) ; 构造一个没有标题的无模式对话框。 • JDialog(Frame owner, boolean modal); 构造一个没有标题的对话框,boolean型参数modal指定是否为模式对话框。 • JDialog(Frame owner, String title) ; 构造一个有标题的无模式对话框。 • JDialog(Frame owner, String title, boolean modal) ; 构造一个有标题的对话框,boolean型参数modal指定是否为模式对话框窗。

10.8 绘图 绘制图形和文字主要用到类Graphics,也叫做绘图环境类。 组件中两个最主要的与绘图相关的方法是paint(Graphics g)及repaint()。 当组件被显示时调用paint(Graphics g)方法,每当需要重绘组件时,调用repaint()方法,该方法又自动调用paint(Graphics g)方法。 重绘组件发生情况可能是:组件被其它窗口覆盖,移走其它窗口;该组件极小化又恢复后;窗口大小发生变化。 一般说来,paint()方法由系统在恰当的时候调用,编程者不能主动调用。绘制图形的工作应尽量在paint()方法中完成。

10.8 绘图 熟悉在图形界面上绘图的基本操作,了解在Applet中进行绘图。 1) A 直接绘制窗体 重写 JFrame的paint( Graphics g) B 绘制JPanel将面板加入JFrame中显示重写JPanel面板的 paintComponent(Graphics g) C Applet中重写paint ( Graphics g)方法。 2) Graphics g类的绘图方法参见API: drawXXX(); fillXXX();

3)设置绘图画笔颜色Color和字体Font Color c=new Color(int ,int ,int ); Font f=new Font(“字体名”,样式,磅值); g.setColor(c); g.setFont(f); 4) 绘制图片: try{ Image im=ImageIo.read(new file(“image/s.jpg”)); g.drawImage(im,50,50,null); }catch(Exception e){} 示例:【例10-27】在JPanel面板上画坐标(10,10)~(50,50)的直线。 TestDraw.java

音频文件的播放 用java可以播放.au,.aiff,.wav,.mid,.rfm格式的音频文件,播放步骤如下: 1.创建File对象 File f=new File(“sound\h.mid”); 2.获取URI对象 URI i=f.toURI(); 3.获取URL对象 URL l=i.toURL(); 4.生成AudioClip 对象 AudioCilp clip=Applet.newAudioClip(l); 由于要进行基本的IO操作所以前4步必须放在异常处理框架中; 5.控制播放 clip.play(); clip.loop();clip.stop(); 需导入的包:java .Io.*;java.applet.*;java.net.*;

本章小结 awt和Swing Frame和Panel 布局管理器使用及特点 事件响应机制 项目管理部分: 在JCreator 中编写带素材的应用程序,像要使用的图片,音频文件,可以在项目中建立一个文件夹命名为image或audio,在其中放源文件; 在程序中使用: ../image/a.jpg 或../audio/a.midi去关联文件。