Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框

上传人:E**** 文档编号:89389247 上传时间:2019-05-24 格式:PPT 页数:26 大小:72.50KB
返回 下载 相关 举报
Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 _第1页
第1页 / 共26页
Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 _第2页
第2页 / 共26页
Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 _第3页
第3页 / 共26页
Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 _第4页
第4页 / 共26页
Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 _第5页
第5页 / 共26页
点击查看更多>>
资源描述

《Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 》由会员分享,可在线阅读,更多相关《Java程序设计实用教程 教学课件 ppt 作者 秦学礼 等 第8章 窗口、菜单和对话框 (26页珍藏版)》请在金锄头文库上搜索。

1、2019/5/24,秦学礼,1,JAVA程序设计实用教程(8),秦学礼,秦学礼,2,2019/5/24,第8章 窗口、菜单和对话框,8.1窗口及事件 8.2 菜单 8.3 对话框,秦学礼,3,2019/5/24,8.1窗口及事件,窗口的构造方法: Frame(); 创建一个没有标题的窗口。 Frame(String title); 创建一个标题为title的窗口。 常用方法: setBackground(Color c); 根据参数c设置窗口的底色。 setVisible(boolean b); 根据参数b设置窗口是否可见,值为true(可见)或者false(不可见)。 pack(); 用紧凑

2、方式显示窗口。如果不用该方法,窗口初始出现时看不到窗口中的组件,当调整窗口大小时才能看到这些组件。 setTitle(String title); 设置窗口的标题是title。 getTitle(); 获得窗口的标题。 setResizable(boolean b); 设置当前窗口是否可调整大小(默认是可调整),值为true(可调整)或者false(不可调整)。 setSize(w,h); 设置窗口的大小。 setBounds(x,y,w,h); 设置窗口的坐标和大小。,秦学礼,4,2019/5/24,上一章已经介绍了窗口的事件(WindowEvent)中的windowClosing事件是关闭

3、窗口的,其实总共有7个窗口事件: windowActivated(); 窗口被激活。 windowDeactivated(); 窗口失活(其他窗口激活)。 windowClosed(); 窗口已被关闭。 windowClosing(); 窗口正被关闭。 windowOpened(); 窗口已被打开。 windowIconified(); 窗口被最小化为图标。 windowDeiconified(); 窗口由图标恢复。,秦学礼,5,2019/5/24,例8.1 一个使用窗口事件的简单例子。运行结果如图8.1所示。 算法分析: (1)定义一个窗口类。 (2)添加窗口的打开、关闭和激活等7个事件处理

4、方法。 源程序(javajcch08 windowevent.java) 程序分析: 在本例中,把事件监听者注册给WinLis类处理。windowClosing()事件中使用了dispose()方法,用来释放窗口和其上的组件所占用的资源。然后关闭窗口。 在例8.1里的7个窗口事件并不总是全部使用,有时候只使用其中几个事件。比如说例8.2。,秦学礼,6,2019/5/24,例8.2 另外一个使用部分窗口事件的例子。运行结果如图8.2所示。 算法分析: (1)定义一个窗口类。 (2)添加窗口事件的其中四个事件。 源程序(javajcch08 WindowListener_Example.java)

5、 程序分析: 请注意,本例中只重写了4个事件,另外三个事件windowOpened()、windowIconified()和windowDeiconified()并没有重写和使用,但是在程序中还是一定要写出来,不然程序就会出错。但是如果使用的是WindowAdapter类,不使用的事件就不需要写出来了。,秦学礼,7,2019/5/24,例8.3 一个使用WindowAdapter类的窗口事件例子。运行结果仍如图8.2所示。 算法分析: (1)定义一个窗口类。 (2)添加windowActivated 等4个窗口事件。 源程序(javajcch08 WindowAdapter_Example.j

6、ava) 程序分析: 请注意比较例8.3和例8.2程序里的区别,它们的运行结果是一样的,但是所使用的事件类是不一样的,例8.3使用的是WindowAdapte类,没有使用的3个窗口事件就不需要写出来。这里使用的是extends关键字。,秦学礼,8,2019/5/24,8.2 菜单 菜单是图形用户界面的重要组成部分,它是由菜单条(MenuBar)、菜单(Menu)、菜单项(MenuItem)和复选菜单项(CheckboxMenuItem)等组成的。它们的继承关系如图8.3所示。,图8.3 菜单栏类的继承关系,秦学礼,9,2019/5/24,8.2.1 为窗口加入菜单和定义二级菜单 菜单与其他组件

7、不同,无法直接添加到容器的某一位置,也无法用布局管理器对其加以控制,它由以下概念支撑: 1菜单条(MenuBar) Java.awt包中的MenuBar类是负责创建菜单条,即MenuBar类的一个实例就是一个菜单条。菜单条只能添加到Frame中(用setMenuBar()),做为摆放菜单的容器。 创建菜单条: MenuBar MenuBar1=new MenuBar()。 添加创建菜单条到Frame中: setMenuBar(MenuBar1)。,秦学礼,10,2019/5/24,2菜单(Menu) Menu类负责创建菜单,即Menu类的一个实例就是一个菜单。菜单必须添加到菜单条中。 创建菜单

8、:Menu Menu1=new Menu(“文件“)。 添加到菜单条中: menubar.add(Menu1)。 3菜单项(MenuItem) MenuItem类是负责创建菜单项的,即MenuItem类的一个实例就是一个菜单项。菜单项必须添加到菜单中。 创建菜单项:MenuItem item1=new MenuItem(“新建“)。 添加到菜单中: menu1.add(item1)。,秦学礼,11,2019/5/24,4分隔线 当希望在菜单项之间添加一条横向的分隔线,把菜单项分为几组时,可以添加分隔线。 创建分隔线 menu1.addSeparator()或者menu1.add(“-“)。 5

9、检测盒菜单子项 这种菜单与复选框一样有“选中”和“未选中”两种状态,处于“选中”状态的检测盒菜单子项前面有一个小对号。 创建检测盒菜单子项: CheckboxMenuItem Checkbox=new CheckboxMenuItem(“ “); 添加到菜单中: menu1.add(Checkbox)。,秦学礼,12,2019/5/24,例8.4 一个窗口加入菜单及其事件的简单例子。运行结果如图8.4所示。 算法分析: (1)定义一个窗口类并声明监听者。 (2)添加菜单的actionPerformed()事件处理方法。 源程序(javajcch08 Menu_Example.java):,秦学

10、礼,13,2019/5/24,例8.5 一个窗口加入二级菜单和菜单的事件处理的例子,使用数组添加菜单。运行结果如图8.5所示。 算法分析: (1)定义一个窗口类并声明监听者。 (2)使用数组作为添加项,然后用For循环添加二级菜单 (3)给菜单添加itemStateChanged()事件处理方法。 源程序(javajcch08 MenuItem_Example.java) 程序分析: 需要注意的是,例8.5中使用的二级菜单是通过数组来添加的,对于组件比较多的时候,使用这种方式添加较方便。而对于“Bold”这个菜单项是使用的CheckboxMenuItem。,秦学礼,14,2019/5/24,8

11、.2.3 弹出式菜单 弹出式菜单是附着在一个组件或者容器上,一般当单击鼠标右键时,才会出现。弹出式菜单也有子菜单。 创建弹出式菜单: PopupMenu pm=new PopupMenu(); MenuItem mi=new MenuItem(“Copy“); pm.add(mi); 然后把弹出式菜单附着在一个组件或容器上: TextArea ta=new TexArea(); ta.add(pm); 当在文本区单击鼠标右键时,触发一个鼠标事件,处理方法是isPopupMenu()方法,有三个参数,第一个是含有坐标系的对象,当值为this时表示当前窗口,后两个参数是鼠标单击是的x和y位置。,秦

12、学礼,15,2019/5/24,例8.6 一个在窗口中加入弹出式菜单和其事件处理的例子。运行结果如图8.6所示。 算法分析: (1)定义一个窗口类并声明监听者ActionListener和MouseListener。 (2)窗口加入弹出式菜单及其actionPerformed()和actionPerformed()事件处理方法。 源程序(javajcch08 popmenu.java),秦学礼,16,2019/5/24,程序分析: 在本例中,选择Copy选项时,getActionCommand()方法取得弹出式菜单的菜单项的名称为Copy,文本区上显示You are chose Copy。使用

13、了ActionEvent和MouseEvent事件类。因此声明了ActionListener和MouseListener两个接口,文本区添加了MouseListener,弹出式菜单添加了ActionListener,isPopupTrigger()方法设置了弹出式菜单的显示坐标。由于使用的是MouseListener,所以每一个鼠标事件都要写出来。,秦学礼,17,2019/5/24,8.3 对话框 对话框(Dialog)在GUI中是经常使用的窗口对象,它和窗口一样有标题、边框、关闭按钮,它是独立的容器,不能被其他的容器包容,不能作为最外层的容器,也不能包含菜单条。它是隶属于一个窗口并由这个窗口

14、负责弹出。 8.3.1 Dialog类 8.3.2 FileDialog类,秦学礼,18,2019/5/24,8.3.1 Dialog类 对话框是由Dialog类实现的,它的继承关系如图8.7所示。,图8.7 Dialog类的继承关系,秦学礼,19,2019/5/24,Dialog类的构造方法: Dialog(Dialog owner); 创建一个对话框,指定其拥有者为对话框owner。 Dialog(Dialog owner,String title); 创建一个拥有者为对话框owner的对话框,标题为title。 Dialog(Dialog owner,String title,Boole

15、an modal); 创建一个拥有者为对话框owner、标题为title的对话框,设置是否为模式对话框在该窗口被关闭之前,其他窗口无法接受任何形式的输入,当modal值为true时是模式对话框,为false时是无模式对话框。 Dialog(Frame owner); 创建一个对话框,指定其拥有者为窗口owner。,秦学礼,20,2019/5/24,Dialog(Frame owner, Boolean modal); 创建一个拥有者为窗口owner的对话框,并设置是否为模式对话框。 Dialog(Frame owner,String title); 创建一个拥有者为窗口owner的对话框,标题

16、为title。 Dialog(Frame owner,String title,Boolean modal); 创建一个拥有者为窗口owner、标题为title的对话框,设置是否为模式对话框。,秦学礼,21,2019/5/24,常用方法: void dispose(); 销毁对话框对象,释放掉对话框占用的内存。 String getTitle(); 获取对话框标题。 void hide(); 隐藏对话框。 boolean isModal(); 测试对话框是否为模式对话框。 boolean isResizable(); 测试对话框是否可以改变大小。 void setModal(); 设置对话框为模式对话框。 void setResizable(boolean resizable); 设置对话框是否可以改变大小。 void setTitle(String title); 设置对话框的标题。 void show(); 显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号