




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章窗口、菜单和对话框,本章的任务:介绍图形用户界面的高级组件。这些组件包括窗口、菜单和对话框等,它们可以构造出标准GUI应用程序。最后,简要介绍JavaSwing的使用方法。,本章主要内容,1.窗口2.菜单3.对话框4.Swing简介,9.1窗口,Java的窗口由Frame类生成,遗憾的是它不具有关闭功能,必须要在程序中实现窗口事件监听接口并编写关闭窗口的代码才行。本节介绍创建可关闭窗口的几种方法以及窗口的使用。,9.1.1创建可关闭窗口,例9.1方式1:创建一个可关闭的空白窗口,如图所示。,importjava.awt.*;importjava.awt.event.*;classW1extendsFrameimplementsWindowListenerW1()super(Window1);setSize(350,200);setVisible(true);addWindowListener(this);,publicvoidwindowClosing(WindowEvente)System.exit(0);publicvoidwindowOpened(WindowEvente)publicvoidwindowClosed(WindowEvente)publicvoidwindowIconified(WindowEvente)publicvoidwindowDeiconified(WindowEvente)publicvoidwindowActivated(WindowEvente)publicvoidwindowDeactivated(WindowEvente)publicstaticvoidmain(Stringargs)newW1();,9.1.2窗口事件适配器,例9.2方式2:创建一个可关闭的空白窗口。importjava.awt.*;importjava.awt.event.*;publicclassW2extendsFrameW2()super(Window2);setSize(350,200);setVisible(true);addWindowListener(newWin();,publicstaticvoidmain(Stringargs)newW2();classWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)System.exit(0);,窗口事件适配器是为方便程序员而专门设计的类。定义:,publicabstractclassWindowAdapterextendsObjectimplementsWindowListenerpublicWindowAdapter()/构造方法publicvoidwindowOpened(WindowEvente)/窗口被打开后调用publicvoidwindowClosing(WindowEvente)/窗口被关闭时调用publicvoidwindowClosed(WindowEvente)/窗口被关闭后调用publicvoidwindowIconified(WindowEvente)/窗口被缩小为图标时调用publicvoidwindowDeiconified(WindowEvente)/窗口被复原时调用publicvoidwindowActivated(WindowEvente)/窗口激活时调用publicvoidwindowDeactivated(WindowEvente)/窗口失活时调用,9.1.3匿名类,例9.3方式3:创建一个可关闭的空白窗口。importjava.awt.*;importjava.awt.event.*;publicclassW3publicstaticvoidmain(Stringargs)Framef=newFrame(Window3);f.setSize(350,200);f.setVisible(true);f.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,9.1.4在窗口中加入组件,例9.4在窗口中添加按钮,点击“显示”按钮可以显示文字,点击“退出”按钮可关闭窗口,同时窗口右上角的关闭按钮也起作用。如图所示。,importjava.awt.*;importjava.awt.event.*;publicclassW4extendsFrameimplementsActionListenerButtonbtn1,btn2;TextFieldf;W4()super(Window4);addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,setSize(350,200);btn1=newButton(显示);btn2=newButton(退出);f=newTextField(20);setLayout(newFlowLayout();add(f);add(btn1);add(btn2);btn1.addActionListener(this);btn2.addActionListener(this);show();,publicstaticvoidmain(Stringargs)newW4();publicvoidactionPerformed(ActionEvente)f.setText(你按下了“+e.getActionCommand()+”按钮);if(e.getSource()=btn2)for(inti=0;i100000000;i+);System.exit(0);,9.1.5多重窗口,例9.5设计一个多重窗口的程序,如图所示。,importjava.awt.*;importjava.awt.event.*;publicclassW5extendsFrameimplementsActionListenerButtonbtn;W5()super(Window5);addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,setSize(350,200);btn=newButton(打开新窗口);setLayout(newFlowLayout();add(btn);btn.addActionListener(this);setLocation(200,100);show();,publicstaticvoidmain(Stringargs)newW5();publicvoidactionPerformed(ActionEvente)newW5();setLocation(getX()+20,getY()+20);toFront();,9.2菜单,菜单是图形用户界面的重要组成部分。由菜单条(MenuBar)、菜单(Menu)、菜单项(MenuItem)和复选菜单项(CheckboxMenuItem)等对象组成。,9.2.1为窗口加入菜单,例9.6在窗口中添加菜单,如图所示。,importjava.awt.*;importjava.awt.event.*;publicclassW6extendsFrameimplementsActionListenerPanelp=newPanel();Buttonbtn=newButton(退出);MenuBarmb=newMenuBar();/以下生成菜单组件对象Menum1=newMenu(文件);MenuItemopen=newMenuItem(打开);MenuItemclose=newMenuItem(关闭);MenuItemexit=newMenuItem(退出);,Menum2=newMenu(编辑);MenuItemcopy=newMenuItem(复制);MenuItemcut=newMenuItem(剪切);MenuItempaste=newMenuItem(粘贴);Menum3=newMenu(帮助);MenuItemcontent=newMenuItem(目录);MenuItemindex=newMenuItem(索引);MenuItemabout=newMenuItem(关于);,W6()super(Window6);setSize(350,200);add(South,p);p.add(btn);btn.addActionListener(this);m1.add(open);/将菜单项加入到菜单中m1.add(close);m1.addSeparator();/将分隔条加入到菜单中m1.add(exit);exit.addActionListener(this);/注册菜单项的事件监听器mb.add(m1);/将菜单加入到菜单条中,m2.add(copy);m2.add(cut);m2.add(paste);mb.add(m2);m3.add(content);m3.add(index);m3.addSeparator();m3.add(about);mb.add(m3);,setMenuBar(mb);/显示菜单条show();publicstaticvoidmain(Stringargs)newW6();publicvoidactionPerformed(ActionEvente)if(e.getActionCommand()=退出)System.exit(0);,9.2.2菜单综合应用,例9.7菜单综合应用,如图所示。,importjava.awt.*;importjava.awt.event.*;publicclassW7extendsFrameimplementsActionListener,ItemListenerTextFieldmsg=newTextField();MenuBarmb=newMenuBar();Menum1=newMenu(菜单);Menum2=newMenu(二级菜单);MenuItemitem=newMenuItem(普通菜单项,newMenuShortcut(p);CheckboxMenuItemcheckbox=newCheckboxMenuItem(复选菜单项);MenuItemexit=newMenuItem(退出);,W7()setTitle(菜单综合应用);setSize(350,200);add(msg);mb.add(m1);m1.add(m2);/将二级菜单m2加入到m1中checkbox.setState(true);/设定复选菜单项为选中m1.add(item);m1.add(checkbox);m1.addSeparator();m1.add(exit);m2.add(菜单项);/为二级菜单m2加入菜单项m2.add(菜单项);,item.addActionListener(this);/注册事件监听器checkbox.addItemListener(this);exit.addActionListener(this);setMenuBar(mb);/显示菜单show();/显示窗口publicvoidactionPerformed(ActionEvente)if(e.getSource()=exit)System.exit(0);elsemsg.setText(e.getActionCommand()+被打开);,publicvoiditemStateChanged(ItemEvente)if(e.getSource()=checkbox)if(checkbox.getState()msg.setText(checkbox.getLabel()+被选中);elsemsg.setText(checkbox.getLabel()+被取消);publicstaticvoidmain(Stringarg)newW7();,9.2.3弹出式菜单,弹出式菜单是一种非常方便的菜单工具,它平常依附在某个容器或组件上并不显现出来,当用户点击鼠标右键时它就会弹出来。,例9.8弹出式菜单应用,如图所示。,importjava.awt.*;importjava.awt.event.*;publicclassW8extendsFrameimplementsActionListener,MouseListenerTextAreamsg=newTextArea();PopupMenupm=newPopupMenu();MenuItemitem1=newMenuItem(复制);MenuItemitem2=newMenuItem(剪切);MenuItemitem3=newMenuItem(粘贴);,W8()setTitle(弹出式菜单);setSize(350,200);addWindowListener(newWindowAdapter()/注册窗口的事件监听器publicvoidwindowClosing(WindowEvente)System.exit(0););add(msg);msg.add(pm);/将弹出式菜单加入到文本区中pm.add(item1);pm.add(item2);pm.add(item3);,item1.addActionListener(this);item2.addActionListener(this);item3.addActionListener(this);msg.addMouseListener(this);/注册文本区的鼠标事件监听器show();publicvoidactionPerformed(ActionEvente)msg.append(你选择了+e.getActionCommand()+n);,publicvoidmouseReleased(MouseEvente)if(e.isPopupTrigger()/判断是否按下鼠标右键pm.show(this,e.getX(),e.getY();/显示弹出式菜单publicvoidmouseClicked(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmousePressed(MouseEvente)publicstaticvoidmain(Stringarg)newW8();,9.3对话框,对话框是GUI中很常见的窗口对象,有着广泛的应用。对话框和普通窗口最大的不同就是对话框是依附在某个窗口上,一旦它所依附的窗口关闭了,对话框也要随着关闭。,9.3.1自定义对话框,Dialog有7个构造方法:Dialog(Dialogowner)Dialog(Dialogowner,Stringtitle)Dialog(Dialogowner,Stringtitle,booleanmodal)Dialog(Frameowner)Dialog(Frameowner,booleanmodal)Dialog(Frameowner,Stringtitle)Dialog(Frameowner,Stringtitle,booleanmodal),9.3.2创建自定义对话框实例,例9.9建立一个自定义对话框,如下两图。,importjava.awt.*;importjava.awt.event.*;publicclassW9extendsFrameimplementsActionListenerintrow=6,col=40;Panelp1=newPanel(),p2=newPanel();TextAreata=newTextArea(文本区行数:+row+列数:+col,row,col);Buttonexit=newButton(退出),dialog=newButton(对话框);,W9()setTitle(对话框的父窗口);setSize(350,200);add(Center,p1);add(South,p2);p1.add(ta);p2.add(exit);p2.add(dialog);exit.addActionListener(this);dialog.addActionListener(this);setVisible(true);,publicstaticvoidmain(Stringargs)newW9();publicvoidactionPerformed(ActionEvente)if(e.getSource()=exit)System.exit(0);elseMyDialogdlg=newMyDialog(this,true);dlg.show();,classMyDialogextendsDialogimplementsActionListenerLabellabel1=newLabel(请输入行数);Labellabel2=newLabel(请输入列数);TextFieldrows=newTextField(50);TextFieldcolumns=newTextField(50);ButtonOK=newButton(确定);ButtonCancel=newButton(取消);,MyDialog(W9parent,booleanmodal)super(parent,modal);setTitle(自定义对话框);setSize(260,140);setResizable(false);setLayout(null);add(label1);add(label2);label1.setBounds(50,30,65,20);label2.setBounds(50,60,65,20);,add(rows);add(columns);rows.setText(Integer.toString(ta.getRows();columns.setText(Integer.toString(ta.getColumns();rows.setBounds(120,30,90,20);columns.setBounds(120,60,90,20);add(OK);add(Cancel);OK.setBounds(60,100,60,25);Cancel.setBounds(140,100,60,25);OK.addActionListener(this);Cancel.addActionListener(this);,publicvoidactionPerformed(ActionEvente)if(e.getSource()=OK)introw=Integer.parseInt(rows.getText();intcol=Integer.parseInt(columns.getText();ta.setRows(row);ta.setColumns(col);ta.setText(文本区行数:+row+列数:+col);dispose();,9.4Swing简介,Swing的功能:Swing按钮类和标签类除了显示文本标题外还可以显示图像标题。可以为Swing容器加上边框。Swing组件能自动适应操作系统的外观,而AWT组件总是保持相同外观。Swing组件不一定非得是矩形的,可以把按钮设计成圆形。可以调用Swing组件的方法改变其外观和行为。,9.4.1Swing按钮与标签,例9.10图像按钮与图像标签应用,如图所示。,importjavax.swing.*;importjava.awt.*;importjava.awt.Color;publicclassW11extendsJAppletContainerpane;JPanelpanel1,panel2;JButtonbutton1,button2,button3;JLabellabel;,publicvoidinit()pane=getContentPane();panel1=newJPanel(newFlowLayout();panel2=newJPanel(newFlowLayout();ImageIconicon=newImageIcon(PreviousArrow.gif,);button1=newJButton(icon);button2=newJButton(newImageIcon(image/go.GIF);button3=newJButton(newImageIcon(NextArrow.gif);label=newJLabel(图像标签,newImageIcon(Candl02.gif),SwingConstants.CENTER);,pane.setBackground(newColor(255,255,204);panel1.setBackground(newColor(255,255,204);panel2.setBackground(newColor(255,255,204);button1.setToolTipText(向上翻页按钮);button2.setToolTipText(跳转按钮);button3.setToolTipText(向下翻页按钮);,pane.add(panel1,BorderLayout.NORTH);pane.add(panel2,BorderLayout.SOUTH);panel1.add(button1);panel1.add(button2);panel1.add(button3);panel2.add(label);,9.4.2Swing工具栏,例9.11工具栏与文本区应用,如图所示。,importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassW12extendsJFrameimplementsActionListenerJButtonbutton1,button2,button3;JToolBartoolBar;JTextAreatextArea;JScrollPanescrollPane;JPanelpanel;publicW12()super(工具栏按钮);addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,button1=newJButton(newImageIcon(left.gif);button2=newJButton(newImageI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防分区施工方案(3篇)
- 铜梁拓展公司活动策划方案(3篇)
- 铝板石材施工方案(3篇)
- 观看廉洁影片活动方案策划(3篇)
- 交通管道过路施工方案(3篇)
- 建房封顶施工方案(3篇)
- 北京市朝阳区2023-2024学年七年级上学期期中考试生物考题及答案
- 安徽省芜湖市南陵县2024-2025学年高二上学期第一次月考地理试题含参考答案
- 心理基础考试题目及答案
- 校园美食问答题目及答案
- 首诊负责制度检查分析报告
- 汤小丹《计算机操作系统》官方课件 第四版
- 新药研发方案及计划书模板
- 走近昆曲《牡丹亭》
- 3D打印混凝土材料性能试验方法
- XX学校学校集体备课实施方案细则、方案、计划、制度、总结(全套资料)
- 不良资产项目律师法律尽调报告(模板)
- 医疗设备、器械项目实施方案、服务实施方案
- 非居民金融账户涉税信息尽职调查和信息报送制度
- 世界排名前100的大学校徽
- 附着式钢管抱杆铁塔组立施工方案
评论
0/150
提交评论