首页 第7章 new图形用户界面的实现

第7章 new图形用户界面的实现

举报
开通vip

第7章 new图形用户界面的实现null第7章 图形用户界面的实现第7章 图形用户界面的实现图形界面作为用户与程序交互的窗口,是软件开发中一项非常重要的工作。7.1 图形用户界面概述7.1 图形用户界面概述设计和实现图形用户界面时,主要包含两项内容。 (1)创建图形界面中需要的元素,进行相应的布局。 (2)定义界面元素对用户交互事件的响应以及对事件的处理。7.2 Swing与AWT7.2 Swing与AWTAWT、Swing作为图形界面的开发包同时存在于同一标准库中,那么二者之间的区别在哪里呢?创建图形界面时如何取舍?7.2.1 S...

第7章  new图形用户界面的实现
null第7章 图形用户界面的实现第7章 图形用户界面的实现图形界面作为用户与程序交互的窗口,是软件开发中一项非常重要的工作。7.1 图形用户界面概述7.1 图形用户界面概述设计和实现图形用户界面时,主要包含两项内容。 (1)创建图形界面中需要的元素,进行相应的布局。 (2)定义界面元素对用户交互事件的响应以及对事件的处理。7.2 Swing与AWT7.2 Swing与AWTAWT、Swing作为图形界面的开发包同时存在于同一标准库中,那么二者之间的区别在哪里呢?创建图形界面时如何取舍?7.2.1 Swing与AWT之间的关系7.2.1 Swing与AWT之间的关系Swing诞生之前,Java中用来进行图形用户界面开发的工具包为AWT。AWT是“Abstract Window Toolkit”的缩写,又称为“抽象窗体工具包”。 AWT是随早期Java一起发布的GUI工具包,是所有Java版本中都包含的基本GUI工具包,其中不仅提供了基本的控件,并且还提供了丰富的事件处理接口。Swing是继AWT之后Sun推出的又一款GUI工具包。Swing建立在AWT 1.1基础上的,也就是说,AWT是Swing大厦的基石。7.2.2 关于Swing与AWT控件的混用7.2.2 关于Swing与AWT控件的混用由于AWT中提供的控件,均依赖本地系统实现,而Swing控件属于轻量级控件,是由纯Java编写的,使用基本图形元素直接在屏幕上绘制,因此在搭建界面时,如果将二者同时使用,就有可能会出现遮挡的现象。7.3 事 件 处 理7.3 事 件 处 理当用户与GUI交互时,无论是单击鼠标,还是按下键盘,都会触发相应的事件。 在整个过程中涉及到两个对象:事件源与事件监听器。 事件源是指触发事件的控件,如按钮、窗体、列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 等。 不同控件在不同情况下将触发不同的事件,关于事件的信息被封装在事件对象中。 7.3.1 事件的层次结构7.3.1 事件的层次结构前面已经介绍,虽然现在在开发中使用的都是Swing控件,但事件处理模型还是基于AWT 1.1的。本小节将介绍AWT 1.1中的事件层次结构, 所有的事件类都继承自EventObject类,在该类中定义了一个非常有用的getSource()方法,该方法的功能为从事件对象获取触发事件的事件源,为编写事件处理的代码提供方便,该方法的接口如下。7.3.2 窗体事件7.3.2 窗体事件应用中需要使用的其他控件都是直接或间接放在窗体中的。 如果窗体关闭时需要执行自定义的代码,则应该使用事件处理来实现,本小节将结合事件处理模型介绍如何开发处理窗体事件的代码,包括关闭窗体、窗体失去焦点、获得焦点、最小化等情况。null1、窗体的各个事件都使用java.awt.event.WindowEvent类来表示。 2、对应此事件有3个不同的事件监听接口: Java.awt.event.WindowFocusListener Java.awt.event.WindowListener Java.awt.event.WindowStateListener 3、窗体主要有JFrame类实现,提供了几个用于注册窗体事件监听器的方法。见表7-2: addWindowListener(WindowListener l) removeWindowListener(WindowListener l) addWindowStateListener(WindowStateListener l) removeWindowStateListener(WindowStateListener l) addWindowFocusListener(WindowFocusListener l) removeWindowFocusListener(WindowFocusListener l) 7.3.3 鼠标事件7.3.3 鼠标事件当用户在GUI界面上单击鼠标、拖动鼠标、转动鼠标滚轮时,都会触发相应的鼠标事件。对于鼠标事件,Java提供了MouseWheelEvent类和MouseEvent类表示相应的事件。 MouseWheelEvent事件主要用来处理与鼠标滚轮转动相关的动作,如鼠标滚轮转动的方向和单位数。而MouseEvent事件则反映了事件发生时鼠标的按键、水平x坐标、垂直y坐标以及关联鼠标的单击次数。null1、AWT中,提供的鼠标事件监听接口: MouseListener接口 MouseMotionListener接口 MouseWheelListener接口 2、注册鼠标事件监听器的方法: addMouseListener(MouseListener l) removeMouseListener(MouseListener l) addMouseMotionListener(MouseStateListener l) removeMouseMotionListener(MouseStateListener l) addMouseWheelListener(MouseWheelListener l) removeMouseWheelListener(MouseWheelListener l) 7.3.4 事件适配器7.3.4 事件适配器1、适配器是指实现了一个或多个监听接口的类,适配器类为所有的事件处理方法都提供了空实现。实际开发中在编写监听器代码时不再直接实现监听接口,而是继承适配器类并重写需要的事件处理方法,这样就避免了编写大量不必要代码的情况. 2、常用适配器类见表7-5. 7.4 创建图形用户界面7.4 创建图形用户界面介绍如何开发图形用户界面7.4.1 窗体7.4.1 窗体应用中需要使用的其他控件都是直接或间接放在窗体中的. 在Swing中,可以利用JFrame类创建包含标题、边框以及最大化、最小化、关闭按扭的窗口。 JFrame类构造器创建的窗体是不可见的,需要在代码中手工指定才可以在屏幕上看见窗体。 仅仅将窗体设置为可见的还是不能看到窗体,还需要显式地指定窗体的具体尺寸。 例7-27.4.2 面板7.4.2 面板面板是常用的非顶层容器之一。可以将其他控件放在面板中以组织一个子界面。在Swing中,可以使用javax.swing.JPane类创建面板。JPanel类继承自javax.swing.JComponent类。在面板中可以使用不同的布局,按照不同的方式摆放面板中的控件。 如果创建具有双缓冲和流布局的JPanel对象,可以使用不带任何参数的构造函数,如下所示:nullJPanel jp=new JPanel(); JFrame jf=new JFrame(); jf.add(jp); Jf.getContentPane().add(jp);较早jdk版本。7.4.3 标签7.4.3 标签javax.swing.JLabel类即标签类,开发人员可以通过其建立包含文本、图像或两者都包含的标签。JLabel属于普通控件. 并且该控件没有修饰,从界面中是看不到该控件边界的。7.4.4 按扭7.4.4 按扭 javax.swing.JButton类是最简单的按扭类型 当单击按扭时会触发动作事件,如果给按钮注册了相应的监听器,按下按钮就可以执行指定的代码,完成一定的工作。7.5 布 局 管 理7.5 布 局 管 理除了顶层容器控件外,其他的控件都需要添加到容器当中,容器相当于一个仓库。 布局管理器就相当于仓库管理员,采用一定的策略来管理容器中各个控件的大小、位置等属性。 通过使用不同的布局管理器,可以方便地设计出各种控件组织方式的界面。 常用的布局管理器有流布局、网格布局、卡片布局7.5.1 流布局7.5.1 流布局流布局(FlowLayout)是一种非常简单的布局管理器,它按照控件添加的顺序,依次将控件从左至右、从上至下进行摆放,若一行不能放完则会自动转至下一行继续摆放。每一行所放置的控件默认会居中显示,也就是说,若在一行中所有的控件并没有占满这一行,则这些控件会显示在此行的中间。7.5.2 网格布局7.5.2 网格布局网格布局即GridLayout布局.该布局会尽量按照给定的行数和列数排列所有的控件,添加到该布局容器中的控件都将自动调整为相同尺寸,其填充的规则是尽量使现有控件形成矩形。 当容器的大小改变时,所有的控件也都会随着自动改变大小以保证尽量充满整个容器。7.5.3 卡片布局7.5.3 卡片布局卡片布局即CardLayout布局。在卡片布局中,布局的容器中可以添加任意多个控件,但同一时刻只能看见其中的一个控件。7.6 选 择 控 件7.6 选 择 控 件图形界面应用程序中控件是必不可少的基本元素,将各种控件有机地组合起来,便可以搭建出各种各样的图形界面,用来满足不同应用的需要。7.6.1 控件概述7.6.1 控件概述Java中所有的Swing控件都继承自javax.swing.JComponent类,而JComponent类则继承自java.awt.Container类,因此所有的Swing控件都具有AWT容器的功能,图所示为Java中所有Swing控件的继承树。7.6.2 文本框7.6.2 文本框GUI应用程序中,文本框是使用率很高的控件。通过使用文本框和密码框,可以使应用程序与用户之间的交互变得更加方便。 Swing中提供的文本框控件通过JTextField类实现。7.6.3 文本区7.6.3 文本区当需要输入多行文本时使用文本框就无法满足要求了,这时就需要使用文本区。 Swing中专门提供了用来进行多行文本输入的文本区—JTextArea。7.6.4 单选按扭、复选框7.6.4 单选按扭、复选框Swing中的单选按扭(JRadioButton) 复选框(JCheckBox)。 1.JRadioButton类简介 Swing中提供的单选按钮是JRadioButton,其继承自JToggleButton。7.6.4 单选按扭、复选框7.6.4 单选按扭、复选框2.JCheckBox类简介 通过JRadioButton与ButtonGroup的配合使用,可以很方便地实现单项选择。7.6.4 单选按扭、复选框7.6.4 单选按扭、复选框3.ItemEvent事件 JRadioButton、JCheckBox与JToggleButton除了与JButton一样都会触发ActionEvnet动作事件外,JRadioButton、JCheckBox以及JToggleButton还会触发ItemEvent事件。关于ItemEvent事件需要注意以下两点。 (1)ItemEvent事件与ActionEvnet动作事件不同,不是单击按钮就会触发,而是当按钮的状态发生变化时才会触发。例如,从选中到未选中,或者从未选中到选中都会触发ItemEvent事件。 (2)ItemEvent事件的监听器需要实现ItemListener监听接口,只有向JRadioButton、JCheckBox或JToggleButton注册了实现ItemListener监听接口的监听器,当事件被触发时,才会执行监听器当中的事件处理方法。7.6.4 单选按扭、复选框7.6.4 单选按扭、复选框4.单选按扭与复选框的综合使用 通过上面的介绍,读者对单选按扭与复选框有了一定的了解,下面将通过一个同时使用单选按扭与复选框的综合案例例7-10来进一步加深对这两个控件的理解。7.7 菜单和工具栏7.7 菜单和工具栏菜单、工具栏与对话框在GUI应用程序中有着非常重要的作用,通过菜单与工具栏用户可以非常方便地访问应用程序的各个功能,而对话框可以作为非常友好的用户与应用程序之间进行交互的媒介。7.7.1 菜单7.7.1 菜单Swing中的菜单控件都是继承自JComponent类,大多数标准的Swing控件都可以用作菜单项。菜单项可以使用图标,可以为菜单项指定助记符或快捷键,还可以出现单选按扭以及复选框。7.7.2 工具栏7.7.2 工具栏Swing中也提供了用于实现工具栏的类—JToolBar 工具栏(JToolBar)可以看成各种控件的容器,按钮、微调控制器等控件都可以添加进工具栏中。7.8 对 话 框7.8 对 话 框与JFrame类一样,JDialog类也属于顶层容器。 如果需要实现自定义的对话框,可以继承并扩展该类。 该类创建的对话框可以分为两种,模式对话框与非模式对话框。7.9 图形文本绘制7.9 图形文本绘制将介绍Java中图形的绘制与动画的开发。7.9.1 画布7.9.1 画布若要绘制图形,必须具备两个要素,一个是画布,另一个则是画笔。缺少了任何一个元素,图形的绘制都将无法进行. Swing中任何JComponent类的子类都可以充当画布的角色,前面已经介绍过JComponent类是所有Swing控件的超类,因此所有的Swing控件都可以作为画布。7.9.2 画笔7.9.2 画笔Java在绘制图形时,是由Graphics类对象来充当画笔的,该类位于java.awt包中。在了解各个绘图方法之前,首先应该理解下面两个方面的内容。 1.Graphics对象的获取 要特别注意的是,Graphics是一个抽象类,因此开发人员不应该自行编写代码来创建Graphics类的对象,而应该通过下列两种方式之一来获取其对象。 2.坐标系统 Java中绘制图形采用的是笛卡尔坐标系统,该坐标系统以像素为单位。画布左上角为该坐标系统的原点(0,0位置),X轴向右延伸,Y轴则向下延伸。7.9.3 文本7.9.3 文本在Java中,Graphics类专门提供了一个用来绘制文本的drawString()方法,下面给出了该方法的接口。 public void drawString(String str,int x,int y) 参数str为指定要绘制的内容对应的字符串,而x与y分别表示该字符串最左上侧点在画布上的x、y坐标位置。7.9.4 字体7.9.4 字体本小节将介绍Java中对字体提供支持的类—java.awt.Font,通过该类可以使系统中支持的各种字体进行文本显示。 Font类中封装了字体的3个属性:字体名称、样式以及字号,可以通过指定这3个属性来创建指定的字体。该类一共提供了3个构造器,但是开发中经常用到的是使用这3个属性作为参数的构造器,该构造器的声明如下。 public Font(String name,int style,int size)7.10 图 像 处 理7.10 图 像 处 理Java中进行图像处理的时候经常会用到java.awt.Image图像类. Image类位于java.awt包中,是一个抽象类,是Java中所有表示图像的类的超类。实际开发中,一般使用不同类提供的工厂方法来加载图片文件,获取Image对象,7.11 综合示例:围棋程序7.11 综合示例:围棋程序在编写围棋程序时,需要绘制棋谱,编写白棋和黑棋的落棋、吃子等动作,并设置悔棋功能,双击棋子即可完成,单击“重新开局”按钮还可重新开始下棋。整个围棋程序分为3个部分:棋盘、棋子、围棋主类。
本文档为【第7章 new图形用户界面的实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_841731
暂无简介~
格式:ppt
大小:982KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2011-11-06
浏览量:30