首页 javaGUI程序设计

javaGUI程序设计

举报
开通vip

javaGUI程序设计JAVA语言第10讲JAVA的图形用户界面设计JAVA语言第10讲*上一讲回顾 输入/输出流的概念和类层次结构 字节流、字符流的定义和使用 节点流与过滤流的定义和使用 文件管理以及文件操作 对象串行化的概念和实现方法JAVA语言第10讲*学习要点 了解AWT和Swing组件的基础知识 理解如何创建框架窗口 理解如何向框架窗口添加组件 使用各种布局管理器创建复杂的窗口 理解Java的事件处理机制 创建GUI对象,以及各GUI对象的事件处理JAVA语言第10讲**GraphicsUserInterface GUI--G...

javaGUI程序设计
JAVA语言第10讲JAVA的图形用户界面设计JAVA语言第10讲*上一讲回顾 输入/输出流的概念和类层次结构 字节流、字符流的定义和使用 节点流与过滤流的定义和使用 文件管理以及文件操作 对象串行化的概念和实现 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 JAVA语言第10讲*学习要点 了解AWT和Swing组件的基础知识 理解如何创建框架窗口 理解如何向框架窗口添加组件 使用各种布局管理器创建复杂的窗口 理解Java的事件处理机制 创建GUI对象,以及各GUI对象的事件处理JAVA语言第10讲**GraphicsUserInterface GUI--GraphicsUserInterface。 GUI程序给用户提供了一个视觉上更加直观,操作更加方便、快捷的用户环境。 在Java中为方便GUI程序的开发,专门提供多种进行图形用户程序开发的程序包。如抽象窗口工具包AWT和Swing等。*首先,我们学习一些基本的图形编程知识,包括窗口的显示及外观设置、在窗口中显示文字和图像等; 接下来,介绍Java的事件处理机制,例如如何在程序中接收并处理如键盘按键和鼠标点击等“事件”; 最后,系统地介绍图形用户界面中常用组件的用法,如布局管理器、文本框、复选框、菜单、对话框等。JAVA语言第10讲**10.1GUI类 Java提供了帮助创建图形用户界面程序的丰富的类库: 容器类:JFrame,JPanel,JApplet UI组件类: JButton,JTextField,JComboBox,JList,JMenu等 帮助类:Graphics,Color,Font,Demision, LayoutManager等JAVA语言第10讲* 用这些类库中的类(框架、面板、标签、按钮、文本框、组合框、复选按钮、菜单、滚动条等)构造用户界面,这些类又称为GUI类。 GUI类存放在java.awt和javax.swing包中,编程时需要导入。importjava.awt.*;或importjavax.swing.*;JAVA语言第10讲*设计GUI应用程序的流程:(1)引用需要的包和类。(2)设置一个顶层的容器。(3)根据需要为容器设置布局管理器或使用默认布局管理器。(4)将组件添加到容器内,位置自行设计。(5)为响应事件的组件编写事件处理代码。JAVA语言第10讲*10.2框架 创建图形用户界面程序的第一步是创建一个容器类,以容纳其他要显示的组件——主界面(框架)。在这个容器中放入其他一些图形用户界面组件从而组成一个功能完善的程序。 在Java程序中可用于主界面的类主要有两个: 简单窗口类JWindow 框架窗口类JFrame类 JAVA语言第10讲*JFrame……..ContentpaneJPanelJPanelJButtonJLabel中间层容器Swing件组层次关系顶层容器JAVA语言第10讲*10.2.1创建框架 JFrame Swing应用程序的窗口组件类,是Swing中最常使用的容器组件,可以添加其它容器和添加其它组件 JFrame类构造方法: publicJFrame() publicJFrame(StringTitle) JFrame类常用方法: publicContainergetContentPane() publicvoidsetDefaultCloseOperation(intoperation)JAVA语言第10讲*方法setDefaultCloseOperation(intoperation)的参数operation取以下4个常量之一: DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE(默认) DISPOSE_ON_CLOSE EXIT_ON_CLOSEJAVA语言第10讲*JFrame类常用方法(2)setIconImage——窗口最小化。setTitle——设置窗口中标题栏的文字。setResizable——设置用户是否可以改变框架大小。dispose方法——关闭窗口,并回收该窗口的所有资源。setLocation——设置组件的位置。setBounds——重新设置组件的大小和位置。setVisible——设置框架是否可视JAVA语言第10讲*【例10.1】显示一个空框架FirstFrame.javaimportjavax.swing.*;publicclassFirstFrame{ publicstaticvoidmain(String[]args){ SimpleFrameframe=newSimpleFrame(); //设置用户关闭框架时的响应动作 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); //显示该框架 frame.show(); }}classSimpleFrameextendsJFrame{ publicSimpleFrame(){ //设置框架大小 setSize(WIDTH,HEIGHT); } publicstaticfinalintWIDTH=300; publicstaticfinalintHEIGHT=200; }JAVA语言第10讲* \ch10\TestFrame.javaJAVA语言第10讲*容器的分类1、容器(Container类)容器通过使用一些设计管理器,主要负责布置它所包含的组件的位置。Container类允许别的Component对象嵌套在的Container类对象中。2、顶层容器JFrame:一个使用Swing的独立图形用户界面应用程序至少有一个使用JFrame作为根的包含层次JApplet:基于Swing的Applet至少有一个包含层次,其根是JApplet3、中间层容器JAVA语言第10讲*10.2.2在框架内添加组件如果需要将一些图形用户界面元素加入到框架中,则要在面板组件(JPanel)中进行绘制,然后将该面板组件加入到框架的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 窗格(ContentPane)中:  //得到JFrame的内容窗格对象  ContainercontentPane=getContentPane();  Componentc=...;  //将组件加入到内容窗格中  contentPane.add(c);面板JPanel类本身是容器,它可以容纳其他图形用户界面元素,如按钮、菜单等。JAVA语言第10讲*//TestFrame.javaclassSimpleFrameextendsJFrame{ publicstaticfinalintWIDTH=300; publicstaticfinalintHEIGHT=200; publicSimpleFrame(Stringtitle){ super(title); //设置框架大小 setSize(WIDTH,HEIGHT); JButtonbtnOk=newJButton("确定"); getContentPane().add(btnOk); }}JAVA语言第10讲*10.3布局管理 为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。 Java的GUI组件被放置在容器中,然后由容器的布局管理器对它们的位置和大小进行管理。 在程序中,如果没有指定布局管理器,默认的布局管理器就将组件其放置到框架的中央。JAVA语言第10讲* Java共有6种基本的布局管理器,它们分别为:FlowLayout(流式布局)GridLayout(网格布局)BorderLayout(边界布局)CardLayout(卡片布局)GridBagLayout(网格包布局)null(空布局)。 容器类默认的布局管理器为FlowLayout。JAVA语言第10讲*10.3.1FlowLayout布局管理器组件从左上角开始按从左到右、从上到下的方式排列FlowLayout的构造函数:FlowLayout():生成一个默认的流式布局FlowLayout(intalignment):可以设定每一行组件的对齐方式FlowLayout(intalignment,inthorz,intvert):可以设定组件间的水平和垂直距离Applet和面板的缺省布局:FlowLayoutmylayout=newFlowLayout();FlowLayoutexLayout=newFlowLayout(FlowLayout.RIGHT);setLayout(exlayout);//为容器设置新布局ContainercontentPane=getContentPane();//增加相应的按钮for(inti=0;i<buttons;i++){ JButtonaddButton=newJButton("add"+i); contentPane.add(addButton);}JAVA语言第10讲* \ch10\TestLayoutFrame.javaJAVA语言第10讲*10.3.2GridLayout布局管理器GridLayout的构造函数:- GridLayout():生成一个单列的网格布局-GridLayout(introw,intcol):生成一个指定行数和列数的网格布局,水平和垂直间距为0-GridLayout(introw,intcol,inthorz,intvert):生成一个指定行数和列数的网格布局及组件的水平和垂直间隔。用于将容器区域划分为一个矩形网格组件按行和列排列...Buttonbtn[];//声明按钮数组Stringstr[]={"1","2","3","4","5","6","7","8","9"};setLayout(newGridLayout(3,3));btn=newButton[str.length];//创建按钮数组for(inti=0;i<str.length;i++){btn[i]=newButton(str[i]);add(btn[i]);}JAVA语言第10讲* \ch10\TestGridLayout.javaJAVA语言第10讲*10.3.3BorderLayout布局管理器BorderLayout的构造函数:-BorderLayout():生成默认的边界布局-BorderLayout(inthorz,intvert):可以设定组件间的水平和垂直距离窗口、框架和对话框等的缺省布局组件被置于容器的北、南、东、西或中间位置...setLayout(newBorderLayout());ButtonbtnEast=newButton("东");ButtonbtnWest=newButton("西");ButtonbtnNorth=newButton("北");ButtonbtnSouth=newButton("南");ButtonbtnCenter=newButton("中");add(btnEast,BorderLayout.EAST);add(btnWest,BorderLayout.WEST);add(btnNorth,BorderLayout.NORTH);add(btnSouth,BorderLayout.SOUTH);add(btnCenter,BorderLayout.CENTER);JAVA语言第10讲* \ch10\TestBorderLayout.javaJAVA语言第10讲*10.3.4CardLayout布局管理器可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个JPanel对象。每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。JAVA语言第10讲* CardLayout提供了两种构造函数: CardLayout( ) CardLayout(inthorz,intvert) 第一种形式生成了一个默认的卡片布局管理器。第二种形式分别在horz和vert中设定控件之间的水平和垂直间隔。JAVA语言第10讲*主要方法 voidadd(ComponentpanelObj,Objectname); 在生成一副牌之后,通过调用由CardLayout定义的下列方法之一来激活一张卡片: voidfirst(Containerdeck) voidlast(Containerdeck) voidnext(Containerdeck) voidprevious(Containerdeck) voidshow(Containerdeck,StringcardName) 演示TestCardLayout.java*这里,deck是盛卡片的容器的一个引用(通常是一个面板),cardName是一张卡片的名字。调用first()方法使得deck中的第一张牌被显示;若显示最后一张,调用last();显示下一张时,调用next();显示前一张时,调用previous()。next()和previous()都会自动的分别循环回到组的最顶部及最底部。show()方法显示了以cardName命名的卡片。JAVA语言第10讲*10.3.5GridBagLayout布局管理器每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,称为显示区域。构造函数:GridBagLayout()使用GridBagLayout和GridBagConstaints辅助类GridBagLayout管理的每个组件都与GridBagConstaints对象关联JAVA语言第10讲*GridBagConstraints类中包含用来定位及调整组件大小所需的全部信息。组件大小不必相同 组件按行和列排列 放置顺序不一定为从左至右和由上至下获得GridBagLayout:GridBagLayoutgb=newGridBagLayout();ContainerName.setLayout(gb);要使用此布局,必须提供各组件的大小和布局等信息。JAVA语言第10讲*GridBagConstraints类2-1 成员变量列表: gridx,gridy:指定组件放置于哪个单元中 gridwidth,gridheight:指定组件将占用多少行和多少列 weightx,weighty:指定在一个GridBagLayout中应如何分配空间,这些变量的缺省值为0 ipadx,ipady:指定组件的最小高度和宽度JAVA语言第10讲* 成员变量列表: fill:指定在单元大于组件的情况下,组件如何填充此单元,共有4可选值。缺省值为:GridBagConstraints.NONE anchor:指定将组件放置在单元中的位置,共有9个可选值。缺省值为:GridBagConstraints.CENTERGridBagConstraints类2-2JAVA语言第10讲* 这十个组件的每一个都将与其相关的GridBagConstraints对象的fill字段设置为GridBagConstraints.BOTH。此外,这些组件还有以下非默认值约束(Constraints): Button1、Button2、Button3:weightx=1.0 Button4:weightx=1.0、gridwidth=GridBagConstraints.REMAINDER Button5:gridwidth=GridBagConstraints.REMAINDER Button6:gridwidth=GridBagConstraints.RELATIVE Button7:gridwidth=GridBagConstraints.REMAINDER Button8:gridheight=2、weighty=1.0 Button9、Button10:gridwidth=GridBagConstraints.REMAINDERJAVA语言第10讲*创建复杂界面TestGridBagLayout.javaJAVA语言第10讲*10.3.6Null布局管理器 在某些情况下,用户不想使用布局管理器,需要自己设置组件的位置和大小,这时应取消容器的布局管理器,然后再进行设置,否则用户自定义设置将会被布局管理器覆盖。 取消布局管理器的方法是: setLayout(null);JAVA语言第10讲* 用户使用setLocation()、setSize()、setBounds()等方法为组件设置位置和大小。 需要注意的是,这种方法会导致程序与系统相关,如不同的分辨率会产生不同的效果。 TestNULLLayout.javaJAVA语言第10讲*10.4面板容器 一个面板实质上是一个“窗口内的窗口”。它是能够被放入其他容器中的容器。 面板通常用来简化创建复杂的图形用户界面的过程。 例如,我们要在一个框架窗口中放置16个按钮,和一个文本框。*按钮以网格形式放置,而文本框单独放置在框架窗口的顶部。如果将这些组件放置在单个容器,使用各种布局管理器很难得到想要的显示效果。为此可以使用一个面板将组件进行分组显示。即先将组件放入到面板中,将后再将面板放入一框架窗口中。JAVA语言第10讲* JPanel 主要用于放置Swing轻量级组件,不能独立显示,JPanel的对象可以作为顶层容器的内容面板来使用。 JPanel类构造方法: publicJPanel() publicJPanel(LayoutManagerlayout) 示例JPanelDemo.javaJAVA语言第10讲*创建面板及复杂布局 参见JPanelDemo.javaJAVA语言第10讲*10.5事件 目前为止,所有程序都是面向对象的,但是都是以过程化次序执行的。使用了判断和循环语句控制执行流,即程序规定了执行流。 JavaGUI编程是事件驱动的。 在事件驱动编程中,当事件发生——点击按钮,或者鼠标移动——时执行代码。本节介绍Java的事件模型。JAVA语言第10讲*10.5.1事件和事件源 事件与事件处理: 事件处理的3要素: 事件源:产生事件的组件 事件(对象):用户对组件的操作所触发的事件对象 事件监听器:负责处理事件的对象,也可称为事件处理器 Java的事件类和监听器接口大多在java.awt.event包中,一些Swing组件所特有的事件监听器接口则在javax.swing.event中声明JAVA语言第10讲*事件层次结构2-1 事件类 说明 事件源 ActionEvent 通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。 Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。 Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。 Component ItemEvent 单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成此事件。 Checkbox、CheckboxMenuItem、Choice、List FocusEvent 组件获得或失去键盘焦点时会生成此事件。 ComponentJAVA语言第10讲**可编辑JAVA语言第10讲*事件层次结构2-2 事件类 说明 事件源 KeyEvent 接收到键盘输入时会生成此事件。 Component MouseEvent 拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。 Component ContainerEvent 将组件添加至容器或从中删除时会生成此事件。 Container TextEvent 在文本区或文本域的文本改变时会生成此事件。 TextField、TextArea WindowEvent 当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。 WindowJAVA语言第10讲*10.5.2事件监听 Java最新的事件处理方法是基于授权事件模型 当事件来源对象因用户的操作(鼠标或键盘),系统会自动触发此事件类对象E,并 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 所授权的事件监听者A(若来源对象已向A注册),事件监听者A中有处理各种事件的方法(事件处理者1~n)便会处理此事件E的各种状况。JAVA语言第10讲* 授权事件模型: 组件(事件源)都不处理自己的事件,而是将事件处理委托给外部的处理实体(监听器),这种事件处理模型称为事件的授权处理模型。不同的事件,可以交由不同类型的监听器去处理 采用授权事件模型进行事件处理的一般步骤为: 第一确定EventSource,知道什么组件要被处理 第二确定Event,知道什么样的事件要被处理 第三实现EventListener,即编写实现EventListener的事件处理代码 第四将事件监听器对象与事件源的某种事件关联起来 将事件监听器对象与事件源的某种事件关联起来,这个关联的过程称为向事件源注册(Registering)事件监听器。 在一个监听器类中可以实现多个监听器接口,通过它可以同时监听同一个事件源上发生的多种事件,同时,通过事件可以获得事件的详细信息JAVA语言第10讲*授权事件模型--模型图授权事件模型图JAVA语言第10讲*10.5.3事件处理方法一1.首先给组件注册监听器,使用下列方法:addxxxListener(事件监听器对象);2.实现事件,重写接口中的方法。publicvoidactionPerformed(ActionEvente){…}publicvoidkeyPressed(KeyEvente){……}DynamicButtonDemo.javaJAVA语言第10讲*事件处理方法二1。定义事件类,且要实现listenerinterface接口。   privateclassColorActionimplementsActionListener   {…}2。注册事件类,并给他们发送eventobject ColorActionredAction=newColorAction(Color.RED); yellowButton.addActionListener(yellowAction);JAVA语言第10讲*使用实现事件监听器接口的方法处理事件时,必须重写监听器接口中的所有方法,尽管有些方法不会用到。JDK1.1为某些监听器接口提供了适配器类(XXXAdapter),当需要对某种事件进行处理时,只需让事件处理类继承事件所对应的适配器类,只重写需要关注的方法即可,而无关的方法就不必实现了。继承事件适配器类,只需要重写所需要的方法即可。适配器是一个类而不是接口,因而处理事件的类只能继承一个适配器。当该类需要处理多种事件时,通过继承适配器类的方式是不行的。但可以基于适配器类,用内嵌类(InnerClass)的方法来处理这种情况。addKeyListener(newCharType());为事件源注册事件监听器的方法同上。publicclassCharTypeextendsKeyAdapter{publicvoidkeyPressed(KeyEvente){……}//大括号中为处理事件的代码}}事件处理方法二-----事件适配器JAVA语言第10讲* 例子: ch10\CallByKey.java ch10\ButtonTest.java ch10\KeyEventDemo.javaJAVA语言第10讲*10.6用户界面对象(UI) 许多Java的编译器提供了可视化地创建图形用户界面。JAVA语言第10讲*10.6.1常用容器组件JPanel组件是一个中间容器,用于将小型的轻量级组件组合在一起JPanel的缺省布局为FlowLayoutJAVA语言第10讲*10.6.1常用容器组件3-3容器JApplet继承自Applet类,与Applet不同的是,它默认的布局管理器是JAppletBorderLayout,而Applet默认的布局管理器是FlowLayout。可直接向Applet窗口中添加组件,但JApplet添加组件时必须添加到其内容窗格中。得到内容窗格使用方法:getContentPane();JAVA语言第10讲*10.6.2标签(JLabel)既可以显示文本也可以显示图像构造函数如下: JLabel(Iconicon):icon表示使用的图标 JLabel(Stringtext,Iconicon,intalign):align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。 其它常用方法 getText()setText(Stringtext)JAVA语言第10讲*10.6.3按钮(JButton)可以使用以下任一构造函数来创建按钮:JButton():新建一个空的按钮JButton(Iconicon)JButton(Stringtext)JButton(Stringtext,Iconicon)JButtonbtnOk=newJButton("确定!");JButtonbtnCancel=newJButton("取消!");getContentPane.add(btnOk);getContentPane.add(btnCancel);JAVA语言第10讲*10.6.4文本框--JTextFieldJTextField组件允许输入或编辑单行文本此类的构造函数包括: JTextField() JTextField(Documentdoc,Stringtext,intcolumns) JTextField(intcolumns) JTextField(Stringtext) JTextField(Stringtext,intcolumns)…Containercon=getContentPane();con.setLayout(newFlowLayout());JLabeljl=newJLabel(“文本域”);con.add(jl);JTextFieldtf=newJTextField(20);con.add(tf);…JAVA语言第10讲* Ch10/ButtonDemo.javaJAVA语言第10讲*10.6.4文本框--JPasswordFieldJPasswordField组件允许输入或编辑单行文本,并且文本被其他字符代替。此类的构造函数与单行文本框类似。其它方法: char[]getPassword() chargetEchoChar() voidsetEchoChar(charc)JAVA语言第10讲* Ch10/DemoPassword.javaJAVA语言第10讲*10.6.4文本框--JTextAreaJTextArea组件用于接受来自用户的多行文本,可实现可滚动界面JTextArea组件可使用下列构造函数创建: JTextArea() JTextArea(introws,intcols) JTextArea(Stringtext) JTextArea(Stringtext,introws,intcols)…JLabeljl=newJLabel(“文本区”);con.add(jl);JTextAreata=newJTextArea(5,10);con.add(ta);…JAVA语言第10讲*10.6.5复选框-JCheckBox复选框用于为用户提供一组选项JCheckBox类具有下列构造函数: JCheckBox() JCheckBox(Iconicon) JCheckBox(Iconicon,booleanselected) JCheckBox(Stringtext) JCheckBox(Stringtext,booleanselected) JCheckBox(Stringtext,Iconicon) JCheckBox(Stringtext,Iconicon,booleanselected)JAVA语言第10讲* \ch10\JCheckBoxDemo.javaJAVA语言第10讲*10.6.6单选按钮-JRadioButton单选按钮允许用户从多个选项中选择其中一个ButtonGroup用于在Swing中创建组JRadioButton对象可使用下列构造函数创建:JRadioButton()JRadioButton(Iconicon)JRadioButton(Icon,booleanselected)JRadioButton(Stringtext)JRadioButton(Stringtext,booleanselected)JRadioButton(Stringtext,Iconicon)JRadioButton(Stringtext,Iconicon,booleanselected)JAVA语言第10讲* ch10\CheckAndRaidoDemo.javaJAVA语言第10讲*10.6.7列表框-JListpublicJList()publicJList(ListModeldataModel)publicJList(Object[]listData)JList不支持滚动。要启用滚动,可使用下列代码:JScrollPanemyScrollPane=newJScrollPane(); myScrollPane.getViewport().setView(dataList);…Stringstars[]={"安东尼奥.班德拉斯","来昂纳多.迪卡普尼奥","桑德拉.布洛克","休.格兰特","朱莉亚.罗伯茨"};JListmoviestars=newJList(stars);…JAVA语言第10讲*10.6.8组合框-JComboBox文本域和下拉列表的组合在Swing中,组合框由JComboBox表示构造函数如下: publicJComboBox():此构造函数使用缺省数据模型创建JComboBox publicJComboBox(ComboBoxModelasModel):使用现有ComboBoxModel中的项目的组合框 publicJComboBox(Object[]items):包含指定数组元素的组合框…Stringnames[]={"弗雷德里克.福西斯","约翰.克里沙姆","玛丽.希金斯.克拉克","帕特丽夏.康威尔"};JComboBoxauthors=newJComboBox(names);…JAVA语言第10讲* \ch10\ComboDemo.javaJAVA语言第10讲*10.6.9菜单以及弹出式菜单典型的菜单:Swing菜单由菜单栏、菜单和菜单项构成。JAVA语言第10讲*10.6.9菜单3-2JMenuBar是可通过JFrame的根窗格添加至容器的组件。由多个JMenu组成,每个JMenu在JMenuBar中都表示为字符串。JMenu在JMenuBar下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。JMenuItem为JMenu中的一个组件,以文本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等。JAVA语言第10讲*1 创建菜单步骤(a)创建菜单栏,并将菜单栏加入到框架中。JMenuBarmenuBar=newJMenuBar();setJMenuBar(menuBar);(b)创建“File”菜单、“Edit”菜单和“View”菜单。JMenufileMenu=newJMenu("File");JMenueditMenu=newJMenu("Edit");JMenuviewMenu=newJMenu("View");JMenuoptionMenu=newJMenu("Option");(c)创建子菜单。JMenuItempasteItem=newJMenuItem("Paste",'P');JAVA语言第10讲*(d)将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加入到菜单栏中。fileMenu.add(newItem);editMenu.add(pasteItem);viewMenu.add(optionMenu);menuBar.add(fileMenu);menuBar.add(editMenu);menuBar.add(viewMenu);JAVA语言第10讲*2创建复选框和单选按钮菜单项 创建单选按钮菜单项“Forward”,并将“Forward”菜单项加入到“Search”菜单中。 ButtonGroupgroup=newButtonGroup(); forwardItem=newJRadioButtonMenuItem( "Forward"); group.add(forwardItem); searchMenu.add(forwardItem); 创建复选框菜单项“ToolBar”,并加入到子菜单中。 JCheckBoxMenuItemtoolItem=newJCheckBoxMenuItem("ToolBar"); optionMenu.add(toolItem);JAVA语言第10讲* 3 菜单项的使用状态 //初始设置“Save”菜单项为禁用状态。 saveItem.setEnabled(false); 4 快捷键和加速器快捷键显示为带有下划线的字母,加速器则显示为菜单项旁边的组合键。 //设置菜单的快捷键。 fileMenu.setMnemonic('F'); //设置“Exit”菜单项的快捷键为“T”。 JMenuItemexitItem=newJMenuItem("Exit",'T'); //设置“Exit”菜单项的加速器为“Ctrl+T”。 exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));JAVA语言第10讲* 5 弹出式菜单弹出式菜单的创建和菜单的创建基本相同,也需要新建一个弹出式菜单后再加入菜单项。//弹出式菜单。popup=newJPopupMenu();//新建弹出式菜单中的“Cut”菜单项和监听器。cutItemPop=newJMenuItem("Cut",'C');popup.add(cutItemPop);JAVA语言第10讲*菜单示例菜单的用法。程序代码见MenuExample.java。运行结果如下:JAVA语言第10讲* \ch10\MenuDemo.javaJAVA语言第10讲*10.6.10对话框 1.模式对话框和无模式对话框。 在Swing中,提供了四种简单的对话框:showMessageDialog:显示一条消息等待用户点击OK;showConfirmDialog:显示一条消息并等待确认;showOptionDialog:显示一条消息并等待用户在一组自定义选项中的选择;showInputDialog:显示一条消息并等待用户的输入。*模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互。无模式对话框允许用户同时在对话框和程序剩余部分中输入信息。JAVA语言第10讲* 以showConfirmDialog为例: intselection=JOptionPane.showConfirmDialog( DialogFrame.this,//父窗口 "Areyousure?","Logout",//消息以及对话框标题 JOptionPane.OK_CANCEL_OPTION,//底部按钮类型 JOptionPane.WARNING_MESSAGE);//消息类型 底部按钮的类型和对话框有密切的关系。对于showConfirmDialog,按钮可以包括四种: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL__OPTION。JAVA语言第10讲*对话框示例:要求当单击“退出”按钮时,将弹出对话框,同时原先的框架窗口将不能被激活,必须选择对话框中的一个选项才能够退出对话框。程序代码见DialogExample.java。运行结果如下:JAVA语言第10讲*2.JFileChooser对话框提供了标准的文件的打开、保存对话框。JAVA语言第10讲*小结1、GUI常用的容器。2、GUI常用的布局管理器。3、GUI的事件处理机制。4、GUI常用的组件。JAVA语言第10讲*课外任务1、为大作业设计应用程序界面,要求:(1)加入菜单系统;(2)通过“编辑”菜单项,调用数据编辑界面;(3)通过“保存”菜单项,将数据编辑界面上录入的当前记录,存储到文件Sys_dat.dat中,试用2种方法实现:文件流、对象串行化。2、P221,9-1~3.3、带文件选择功能的译码器*输入方式:文本框多行输入,从菜单栏的“文件”菜单中“打开”菜单项选择要打开的文件*输入内容的格式:中文,英文字符*输出方式:文本框多行输出(注意:要用到滚动条),从菜单栏的“文件”菜单中“保存”菜单项指定输出文本框中内容要保存到的文件名,并将输出文本框中内容存入其中*输出内容的格式:输入内容及与之对应的Unicode编码*附加需求:当输出文本框中没有内容的时候,“文件”下的“保存”选项禁用,而输出文本框中一旦有内容的时候,“文件”下的“保存”选项应当可用JAVA语言第10讲*课堂测试 1、求S=1+(1+2)+(1+2+3)+...+(1+2+3+...+100)的值。 2、求解0~500之间被7整除的数之和。JAVA语言第10讲**可编辑*首先,我们学习一些基本的图形编程知识,包括窗口的显示及外观设置、在窗口中显示文字和图像等; 接下来,介绍Java的事件处理机制,例如如何在程序中接收并处理如键盘按键和鼠标点击等“事件”; 最后,系统地介绍图形用户界面中常用组件的用法,如布局管理器、文本框、复选框、菜单、对话框等。*这里,deck是盛卡片的容器的一个引用(通常是一个面板),cardName是一张卡片的名字。调用first()方法使得deck中的第一张牌被显示;若显示最后一张,调用last();显示下一张时,调用next();显示前一张时,调用previous()。next()和previous()都会自动的分别循环回到组的最顶部及最底部。show()方法显示了以cardName命名的卡片。*按钮以网格形式放置,而文本框单独放置在框架窗口的顶部。如果将这些组件放置在单个容器,使用各种布局管理器很难得到想要的显示效果。为此可以使用一个面板将组件进行分组显示。即先将组件放入到面板中,将后再将面板放入一框架窗口中。*模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互。无模式对话框允许用户同时在对话框和程序剩余部分中输入信息。
本文档为【javaGUI程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
金水文库
鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:小学语文
上传时间:2020-05-10
浏览量:1