《【精品】java面向对象程序设计与系统开发第13章 功能拓展-gui(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】java面向对象程序设计与系统开发第13章 功能拓展-gui(可编辑.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面向对象程序设计与系统开发第13章 功能拓展-GUI驱动任任务务一一采用GUI的常用容器和组件设计如下的程序界面2目目标及知及知识点点GUI容器和容器和组件的基本概念件的基本概念1 1GUI容器和容器和组件的使用件的使用23GUI概述概述vGUI(Graphical User Interface)的中文意思是图形用户界面。允许用户以图形的方式与系统进行互动。在GUI推广之前,用户通常要以文本命令的方式来控制计算机。GUI直观的将计算机的功能呈现给用户,降低了用户使用计算机的门槛。v抽象窗口工具包:java.awt:提供基本GUI组件,视觉控制,绘图工具等 java.awt.event:
2、事件处理 4AWT和和SwingvAbstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置,包括早期的 Web 浏览器中的 Java 实现vSwing 是在 AWT 组件基础上构建的。所有 Swing 组件实际上也是 AWT 的一部分。Swing 使用了 AWT 的事件模型和支持类,例如 Colors、Images 和 Graphics。Swing 组件、布局管理器以及事件。5窗体框架(窗体框架(Frame)v一个Frame对象就是一个常见的窗口,它包含有标题栏,可选菜单栏,边框,
3、关闭、最大、最小化按钮v常用方法:8【例【例13-1】创建一个窗体。建一个窗体。vimport java.awt.*;vpublic class exam13_1vpublic static void main(String args)vFrame f=new Frame();/创建一个框架对象fvf.setTitle(My Frame);/设定框架标题vf.setSize(250,200);/设定框架大小vf.setBackground(Color.green);/设定背景颜色vf.setVisible(true);/显示窗体vv9DialogvDialog的对象就是一个对话框,主要用于接受
4、用户输入,它只能基于Frame对象或者另一个Dialog对象上进行显示v常用方法10【例【例13-2】创建模式建模式对话框。框。import java.awt.*;public class exam13_2public static void main(String args)Frame frm=new Frame(Dialog 示例);Dialog dig=new Dialog(frm,对话框框,true);/模式对话框 frm.setBounds(100,100,200,100);/设置窗体位置和大小。dig.setBounds(305,100,200,100);/设置对话框位置和大小 f
5、rm.setVisible(true);/设置窗体为可见 dig.setVisible(true);/设置对话框为可见 11面板(面板(Panel)vPanel 是最简单的容器类。和Frame一样,可以将其他组件放在面板提供的空间内,这些组件包括其他面板,但是和Frame不同的是,Panel(面板)不能生成对象将窗口显示出来,它也必须要作为一个组件放到Frame、Window这样的顶层容器中使用v常用方法12【例【例13-3】演示面板的使用。】演示面板的使用。import java.awt.*;public class exam13_3 extends Frame public static
6、void main(String args)Button btn1=new Button(按按钮1);/按按钮组件件Button btn2=new Button(按按钮2);/按按钮组件件Panel panel=new Panel();/创建一个面板建一个面板Frame frame1=new Frame();/创建一个窗体建一个窗体frame1.setBounds(100,100,200,200);frame1.setBackground(Color.yellow);/设置窗体的置窗体的颜色色frame1.setTitle(AWT Frame测试);/设置窗体的置窗体的标题panel.add(
7、btn1);/将按将按钮添加到面板中添加到面板中panel.add(btn2);/将按将按钮添加到面板中添加到面板中frame1.add(panel);/将面板添加到窗体中将面板添加到窗体中frame1.setVisible(true);/将窗体将窗体显现出来出来13组件件v组件是以图形方式显示在屏幕上提供人机交互的对象按按钮(Button)标签(Label)单行文本行文本输入框(入框(TextField)多行多行输入框(入框(TextArea)下拉下拉选项框(框(Choice)滚动列表列表(List)复复选框(框(Checkbox)复复选框框组(CheckboxGroup)菜菜单(Menu)
8、14按按钮(Button)v常用方法:15【例【例13-4】演示按】演示按钮的的创建建import java.awt.*;public class exam13_4public static void main(String args)Frame f=new Frame();/创建一个窗体f.setTitle(我的GUI窗口);f.setLayout(null);/将窗体的布局方式去掉,布局我们后面将会讲到f.setSize(300,300);/设置窗体的大小f.setBackground(Color.green);/设置窗体的颜色f.setVisible(true);/将窗体显示出来/按钮B
9、utton but1=new Button(确定确定);/创建一个确定按钮Button but2=new Button(取消取消);/创建一个取消按钮but1.setBounds(40,40,80,30);/设置按钮在窗体上的位置和大小but2.setBounds(40,70,80,30);/设置按钮在窗体上的位置和大小f.add(but1);/将按钮添加到窗体上f.add(but2);/将按钮添加到窗体上16标签(Label)vLabel 对象是一个用来放置文本的组件v常用方法:17【例【例13-5】演示】演示标签的使用。的使用。import java.awt.*;public class
10、exam13_5 public static void main(String args)Frame f=new Frame();f.setTitle(我的GUI窗口);f.setLayout(null);/不采用布局f.setSize(200,200);f.setBackground(Color.green);f.setVisible(true);/标签 Label label1=new Label();Label label2=new Label(欢迎你使用迎你使用标签!);Label label3=new Label(“这是一个写是一个写标签的例子的例子”,Label.RIGHT)lab
11、el1.setBounds(40,20,150,20);/标签的位置和大小 label2.setBounds(40,40,150,20);/标签的位置和大小 label3.setBounds(40,60,150,20);/标签的位置和大小 f.add(label1);/向窗体容器中添加标签 f.add(label2);/向窗体容器中添加标签 f.add(label3);/向窗体容器中添加标签18单行文本行文本输入框(入框(TextField)vLabel 对象是一个用来放置文本的组件v常用方法:19【例【例13-6】创建文本框。建文本框。import java.awt.*;public cla
12、ss exam13_5public static void main(String args)Frame frame=new Frame(登录对话框);/创建Frameframe.setLayout(null);/指定布局管理器,关于布局后面我们将专题解frame.setSize(200,150);frame.setVisible(true);Label lblid=new Label(ID:,Label.CENTER);/居中对齐lblid.setBounds(20,30,50,20);TextField id=new TextField();/创建一个单文本框,用于接受用户ID输入 id.
13、setBounds(75,30,110,20);Label lblpwd=new Label(PWD:,Label.CENTER);lblpwd.setBounds(20,55,50,20);TextField pw=new TextField();/创建一个单文本框,用于接受用户密码输入 pw.setBounds(75,55,110,20);Button login=new Button(登录);/登录按钮login.setBounds(40,80,60,20);-Button cancel=new Button(取消取消);/取消按取消按钮cancel.setBounds(105,80,6
14、0,20);pw.setEchoChar(*);/指定密指定密码显示字符示字符为*/向向frame顺序添加序添加组件件frame.add(lblid);/添加添加标签组件件frame.add(id);/添加文本框添加文本框frame.add(lblpwd);frame.add(pw);/添加文本框添加文本框frame.add(login);/添加按添加按钮frame.add(cancel);/添加按添加按钮20下拉下拉选项框(框(Choice)v常用方法:21【例【例13-7】演示】演示创建下拉建下拉选项框。框。import java.awt.*;public class exam13_7pu
15、blic static void main(String args)Frame f=new Frame();f.setTitle(我的GUI窗口);f.setLayout(null);f.setSize(500,300);f.setBackground(Color.green);f.setVisible(true);/选项框Label label=new Label(选项框的例子:);label.setBounds(20,50,80,20);-Choice c=new Choice();/创建一个下拉建一个下拉选项框框c.addItem(北北 京京);/添加添加选项c.addItem(上上 海
16、海);c.addItem(天天 津津);c.addItem(南南 京京);c.addItem(郑 州州);c.addItem(武武 汉);c.setBounds(110,50,60,20);/设置置选项框的位置和大小框的位置和大小f.add(label);f.add(c);22滚动列表列表(List)v常用方法:23【例【例13-8】演示】演示滚动菜菜单的使用。的使用。import java.awt.*;public class exam13_8public static void main(String args)Frame frame=new Frame(List test);List l
17、ist1=new List();/不可多选的列表 List list2=new List(6,true);/true表示可以多选,显示6行 -frame.add(list2);frame.add(list1,Center);/向frame添加list1 frame.add(list2,South);/向frame添加list2 frame.setSize(300,200);frame.setVisible(true);list1.add(长江江);list1.add(黄河黄河);list1.add(“淮河淮河”);list2.add(北京大学北京大学);list2.add(清清华大学大学);l
18、ist2.add(吉林大学吉林大学);list2.add(复旦大学复旦大学);list2.add(南开大学南开大学);list2.add(天津大学天津大学);list2.add(南京大学南京大学);24复复选框(框(Checkbox)v常用方法:25复复选框框组(CheckboxGroup)v常用方法:26【例【例13-10】单选按按钮示例示例import java.awt.*;public class exam13_10public static void main(String args)Frame frame=new Frame(CheckboxGroup);CheckboxGroup
19、radioGroup=new CheckboxGroup();/复选框组/cb1、cb2、cb3属于复选框组radioGroupCheckbox cb1=new Checkbox(红色,radioGroup,true);Checkbox cb2=new Checkbox(黄色,radioGroup,false);Checkbox cb3=new Checkbox(蓝色,radioGroup,false);frame.add(cb1);frame.add(cb2);frame.add(cb3);frame.setLayout(new FlowLayout();frame.setSize(200,
20、100);frame.setVisible(true);27菜菜单(Menu)vJava提供下列类来创建和管理菜单:MenuBar:菜单条 Menu:菜单MenuItem:菜单项CheckboxMenuItem:带复选框的菜单项28菜菜单(Menu)v创建一个完整的菜单参照如下的步骤:创建MenuBar类的对象为你想在菜单栏上出现的每个菜单,创建Menu类对象调用MenuBar类的add()方法来为菜单栏增加菜单对象为每个子菜单项创建MenuItem或CheckboxMenuItem类的对象调用Menu对象的add()方法来增加菜单选项到相应的菜单里。29任任务实现1分析分析该任任务中涉及到的
21、中涉及到的GUI容器和容器和组件件23创建窗体建窗体类给窗体窗体类添加所需要的添加所需要的组件件45创建初始化容器和建初始化容器和组件的方法件的方法利用构造函数在利用构造函数在创建建对象的象的时候自候自动调用步用步骤4所所创建的方法建的方法6让窗体窗体显示出来示出来30驱动任任务务二二在上一节任务开设新账号界面的基础上实现注册账号功能31目目标及知及知识点点事件机制、事件与事件源及事件事件机制、事件与事件源及事件监听器的概念听器的概念1 1捕捕获事件并事件并进行事件行事件处理理232事件和事件源事件和事件源v事件就是在用户界面上发生与用户交互行为而产生的一种效果,如鼠标的各种动作(点击、移入、
22、移出等)、键盘的操作(按下、释放等)以及发生在组件上的各种动作(获得焦点、失去焦点等)v事件源就是产生事件的那个组件,比如点击按钮产生了一个点击事件,那么这个被点击的按钮就是事件源。33事件事件监听器听器v如何捕获事件是我们在做事件处理的时候首先要考虑的问题,这就需对各个事件进行监听,判断该事件是否发生。v常见的事件监听器34【例【例13-11】Frame frame=new Frame();frame.addWindowListener(new WindowListener()public void windowActivated(WindowEvent e)/处理当窗口在最前面理当窗口在最
23、前面时的事件的事件public void windowClosed(WindowEvent e)/处理窗口关理窗口关闭完成后的事件完成后的事件public void windowClosing(WindowEvent e)frame.dispose();/处理点理点击了关了关闭窗口事件窗口事件public void windowDeactivated(WindowEvent e)/处理当窗口不在最前面理当窗口不在最前面时的事件的事件public void windowIconified(WindowEvent e)/处理当窗口最小化理当窗口最小化时的事件的事件public void windo
24、wOpened(WindowEvent e)/处理窗口打开成功事件理窗口打开成功事件);frame.setVisible(true);35事件适配器事件适配器v事件监听器是接口,因此要生成对象完成监听功能则必须要把它所有的抽象方法实现,这给我们开发带来了很多的空方法,如我们只想做窗口关闭事件的时候却要把WindowListener接口的7个方法全部实现出来,而我们实际上只关心windowClosing()方法。有没有一种办法让代码中只包括我们所关心的方法呢?这就要采用事件适配器,36事件适配器事件适配器v常用适配器37【例【例13-12】Frame frame=new Frame();fram
25、e.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)frame.dispose();/处理点理点击了关了关闭窗口事件窗口事件);frame.setVisible(true);38Java面向对象软件开发面向对象软件开发任任务实现1分析注册分析注册业务流程,并构建数据流程,并构建数据库表表结构构23给各个按各个按钮添加事件添加事件监听器听器完成关完成关闭窗口事件窗口事件处理理45完成取消按完成取消按钮事件事件处理理完成确定按完成确定按钮事件事件处理,理,实现账户注册功能注册功能39课堂堂总结 40