《Java09可视化程序设计.ppt》由会员分享,可在线阅读,更多相关《Java09可视化程序设计.ppt(40页珍藏版)》请在三一办公上搜索。
1、Java技术与应用,可视化程序设计(第9章),西安交大 卫颜俊 2009年5月电子信箱:QQ:610568018网站:,主要内容,GUI体系简介AWT可视化基础绘图组件与菜单容器布局管理器事件Swing可视化应用基础案例中的可视化设计,从Word和计算器说起,Word 计算器,GUI体系简介,字符界面(DOS和控制台)使用字符串和命令行的方式与用户交互举例:Application类型程序中的main(String args)图形用户界面(Windows和GUI)使用图形的方式并借助菜单、按钮等标准界面元素以及鼠标操作,方便地向计算机系统发出指令、启动操作,并将系统运行的结果同样以图形方式呈现,
2、GUI窗口和窗口元素,AWT可视化基础,抽象窗口工具包,AWT(Abstract Window Toolkit)Java语言中提供的GUI的基本API独立于机器平台支持Application和Applet两类程序框架,包括:容器、组件、布局管理器、事件处理和其它图形和图像工具。组件、容器和布局管理器属于java.awt包事件属于包。,窗口与屏幕的关系,主物理屏幕用户正在使用的屏幕,即框架或窗口主物理屏幕的坐标体系是:原点在左上角,水平向右x值越来越大,垂直向下y值越来越大虚拟屏幕由主物理屏幕以外的其它多个物理屏幕一起构成内存中的虚拟屏幕,起屏幕缓冲区的作用虚拟屏幕的坐标原点一般在屏幕中心位置,
3、窗口与屏幕的关系(示意图),常用的绘图类和工具类,组件父类-Component,常用的组件与菜单,容器父类-Container,常用的容器,【例9-1】,题目:在屏幕上绘制一条y=sin(x)曲线,其中x0,2。关键点:继承Frame类得到其子类在子类中定义paint方法 在paint方法体中计算循环变量对应的sin之值并将其转换为屏幕坐标 假设横坐标i的值是0,600范围内的整数,则纵坐标的值为y=(int)(600-(1+Math.sin(i*3.1415926/300)*280),在坐标处绘制一个小圆(直径为10),布局管理器,负责管理容器内的所有组件,包括组件的排列顺序、组件的大小、位
4、置以及当窗口移动或调整大小后组件如何变化等每个容器都需要有一个布局管理器,事件,Java语言采取了授权模型,事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。事件处理者(监听器)通常是一个类,该类如果要能够处理某种类型的事件,就必须实现与该事件类型对应的接口。,事件处理的三种对象,事件,用户界面操作的操作类型;组件-事件源,事件发生的场所;监听器,接收事件对象并对其进行处理的对象。,事件处理的一般方法,为了处理某种事件SomeEvent,需要定义相应的事件监听器类,其父接口名为SomeLi
5、stener,并编写相应的事件处理代码,以完成该事件的处理工作;需要对事件监听器类构造对象,并源通过addSomeListener方法对事件进行监听器注册,事件源上发生的事件才能响应;当事件源不需要该事件监听器对象时,可以通过removeSomeListener监听器注销。,事件SomeEvent分类,AWTEvent类:所有AWT事件的根事件类,为抽象类。低级事件类:ComponentEvent、ContainerEvent、WindowEvent、FocusEvent、KeyEvent、MouseEvent和MouseWheelEvent。高级事件类:ActionEvent、Adjustm
6、entEvent、ItemEvent和TextEvent。,事件监听器类,一个事件的事件监听器SomeListener接口对应的事件适配器类为SomeAdapter。事件适配器提供了一种简单的实现监听器的手段,可以缩短程序代码。缺点是由于java语言的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器了。,事件、监听和适配之关系,【例9-2】,题目:建立一个窗口,按照BorderLayout布局方式在最顶部放置一个TextField组件,中央放置一个ScrollPane容器,该容器中又放置一个TextArea组件;当在TextField组件中输入文字时,按回车追加到TextA
7、rea组件中。界面设计:参见程序文件“TestActionEvent.java,【例9-3】,题目:建立一个窗口,当输入键盘非控制字符(包括汉字)时,在窗口随机位置处显示该字符;当拖动鼠标时,绘制一条线段;当关闭窗口时,退出程序。参见程序文件“TestKeyMouseWindowEvent.java”,Swing可视化应用基础,Swing调用本地图形子系统中的底层例程,而不是依赖操作系统的高层用户界面模块,其组件几乎都是轻量级组件。Swing是由100%纯Java实现的,其组件是用Java实现的轻量级组件,没有本地代码,不依赖操作系统的支持。AWT的缺点是组件通过与具体平台相关的对等类(Pee
8、r)实现,因此,Swing比AWT组件具有更强的实用性。,Swing的类层次,Swing组件在javax.swing包中,最典型的组件和容器的名称是对AWT的组件和容器的名称之前加入“J”字母即可。,Swing组件的层次体系,Swing容器的层次体系,常用的Swing组件和容器,【例9-4】,题目:显示当前年月的月历 关键点:设定容器的布局为GridLayout,然后定义42个JButton按钮组件,分别放置最多31天的31个按钮,在容器中首先加入7个JLabel标签组件以表示各星期名标题,然后建立31个按钮对象,使用GregorianCalendar计算出本年本月的1号的星期号和最大天数,根
9、据计算的结果来决定每一个按钮是否隐藏,并对当天对应的按钮设某种颜色背景。其中,按钮的标题使用setText方法来修改,背景颜色使用setBackground方法来修改。,【例9-4】(续),关键点:int weekDayofFirstDay=FirstDay.get(Calendar.DAY_OF_WEEK);/本年本月1号对应的星期号int maxDaysofThisMonth=FirstDay.getActualMaximum(Calendar.DAY_OF_MONTH);/本年本月最大天数。参见程序文件“Application1.java”和“Frame1.java”,Swing标准对话
10、框的使用,1.JColorChooser类。颜色调色板对话框,其方法:static Color showDialog(Component component,String title,Color initialColor)显示颜色调色板对话框。,Swing标准对话框的使用,2.JFileChooser类。文件对话框。构造方法:JFileChooser(File currentDirectory)使用给定的目录作为路径来构造一个对象。方法:int showOpenDialog(Component parent)弹出一个打开文件对话框。int showSaveDialog(Component pa
11、rent)弹出一个保存文件对话框。返回值:当在对话框中按确定按钮时,为JFileChooser.APPROVE_OPTION,否则为JFileChooser.CANCEL_OPTIONFile getSelectedFile()返回选中的文件。File getSelectedFiles()如果将文件对话框设置为允许选择多个文件,则返回选中文件的列表。,Swing标准对话框的使用,3.JOptionPane类。信息对话框。字段:static int YES_OPTION 选择YES时从类方法返回的值。static int NO_OPTION 选择NO时从类方法返回的值。static int OK
12、_OPTION 选择OK时从类方法返回的值。static int CANCEL_OPTION 选择CANCEL时从类方法返回的值。,Swing标准对话框的使用(续),方法:static int showConfirmDialog(Component parentComponent,Object message)显示用户确认对话框。其中参数:parentComponent:对话框的父组件;message:显示提示内容;返回:以上字段值之一,表示用户的选择。static String showInputDialog(Component parentComponent,Object message,
13、Object initialSelectionValue)显示请求用户输入内容的问题消息对话框。其中参数:parentComponent:对话框的父组件;message:显示提示内容;initialSelectionValue:用于初始化输入内容;返回:用户输入的新内容。static void showMessageDialog(Component parentComponent,Object message)调出信息消息对话框。其中参数:parentComponent:对话框的父组件;message:显示提示内容。设置为允许选择多个文件,则返回选中文件的列表。,【例9-5】,题目:Swing
14、标准对话框的使用演示运行结果:参见程序文件“Application2.java”和“Frame2.java”,【例9-6】,题目:JTable二维表格的使用 参见程序文件“Application3.java”和“Frame2.java”,案例中的可视化设计,题目:虚拟酒店点菜系统关键点:客人点菜窗口完成客人的登录后应列出客人的信息,并设计菜系表格供客人选择,根据菜系显示该菜系的所有菜谱列表供客人进一步选择,客人选择的每一个菜谱都加入候选菜单表格,一旦客人确认,这些菜单立即传给相应厨师;还应设计一个表格定时列出厨师给其炒好的菜单。厨师炒菜窗口完成厨师的登录后应列出厨师的信息,设计一个表格定时列出厨师应该炒的菜单列表,厨师铜鼓选择即表示炒好;炒好的菜单立即传给相应客人。,案例中的可视化设计(续),运行结果:参见程序文件“客人面板类.java”、“客人窗口类.java”和“厨师面板类.java”、“厨师窗口类.java”,本讲结束!,谢谢!,