分享
分销 收藏 举报 申诉 / 83
播放页_导航下方通栏广告

类型javaGUI程序设计.ppt

  • 上传人:二***
  • 文档编号:12611453
  • 上传时间:2025-11-10
  • 格式:PPT
  • 页数:83
  • 大小:705.50KB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    javaGUI 程序设计
    资源描述:
    ,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,JAVA,语言,第10讲,JAVA,语言,第10讲 JAVA的图形用户界面设计,2025/11/10 周一,.,上一讲回顾,输入/输出流的概念和类层次结构,字节流、字符流的定义和使用,节点流与过滤流的定义和使用,文件管理以及文件操作,对象串行化的概念和实现方法,2025/11/10 周一,.,学习要点,了解,AWT,和,Swing,组件的基础知识,理解如何创建框架窗口,理解如何向框架窗口添加组件,使用各种布局管理器创建复杂的窗口,理解,Java,的事件处理机制,创建,GUI,对象,以及各,GUI,对象的事件处理,2025/11/10 周一,.,4,Graphics User Interface,GUI-Graphics User Interface,。,GUI,程序给用户提供了一个视觉上更加直观,操作更加方便、快捷的用户环境。,在,Java,中为方便,GUI,程序的开发,专门提供多种进行图形用户程序开发的程序包。如抽象窗口工具包,AWT,和,Swing,等。,2025/11/10 周一,.,5,10.1 GUI,类,Java,提供了帮助创建图形用户界面程序的丰富的类库:,容器类:,JFrame,JPanel,JApplet,UI,组件类:,JButton,JTextField,JComboBox,JList,JMenu,等,帮助类:,Graphics,Color,Font,Demision,LayoutManager,等,2025/11/10 周一,.,用这些类库中的类(框架、面板、标签、按钮、文本框、组合框、复选按钮、菜单、滚动条等)构造用户界面,这些类又称为,GUI,类。,GUI,类存放在,java.awt,和,javax.swing,包中,编程时需要导入。,import java.awt.*;,或,import javax.swing.*;,2025/11/10 周一,.,设计,GUI,应用程序的流程:,(1)引用需要的包和类。,(2)设置一个顶层的容器。,(3)根据需要为容器设置布局管理器或使用默认布局管理器。,(4)将组件添加到容器内,位置自行设计。,(5)为响应事件的组件编写事件处理代码。,2025/11/10 周一,.,10.2,框架,创建图形用户界面程序的第一步是创建一个容器类,以容纳其他要显示的组件,主界面(框架),。,在这个容器中放入其他一些图形用户界面组件从而组成一个功能完善的程序。,在,Java,程序中可用于主界面的类主要有两个:,简单窗口类,JWindow,框架窗口类,JFrame,类,2025/11/10 周一,.,JFrame,.,Content pane,JPanel,JPanel,JButton,JLabel,中间层容器,Swing,件组层次关系,顶层容器,2025/11/10 周一,.,10.2.1,创建框架,JFrame,Swing,应用程序的窗口组件类,是,Swing,中最常使用的容器组件,可以添加其它容器和添加其它组件,JFrame,类构造方法:,public JFrame(),public JFrame(String Title),JFrame,类常用方法:,public Container getContentPane(),public void setDefaultCloseOperation(int operation),2025/11/10 周一,.,方法,setDefaultCloseOperation(int operation),的参数,operation,取以下4个常量之一:,DO_NOTHING_ON_CLOSE,HIDE_ON_CLOSE(,默认,),DISPOSE_ON_CLOSE,EXIT_ON_CLOSE,2025/11/10 周一,.,JFrame,类常用方法(2),setIconImage,窗口最小化。,setTitle,设置窗口中标题栏的文字。,setResizable,设置用户是否可以改变框架大小。,dispose,方法关闭窗口,并回收该窗口的所有资源。,setLocation,设置组件的位置。,setBounds,重新设置组件的大小和位置。,setVisible,设置框架是否可视,2025/11/10 周一,.,【例10.1】显示一个空框架,FirstFrame.java,import javax.swing.*;,public class FirstFrame,public static void main(String args),SimpleFrame frame=new SimpleFrame();,/,设置用户关闭框架时的响应动作,frame.setDefaultCloseOperation(,JFrame.EXIT_ON_CLOSE);,/,显示该框架,frame.show();,class SimpleFrame extends JFrame,public SimpleFrame(),/,设置框架大小,setSize(WIDTH,HEIGHT);,public static final int WIDTH=300;,public static final int HEIGHT=200;,运行结果,2025/11/10 周一,.,ch10TestFrame.java,2025/11/10 周一,.,容器的分类,1、容器(,Container,类),容器通过使用一些设计管理器,主要负责布置它所包含的组件的位置。,Container,类允许别的,Component,对象嵌套在的,Container,类对象中。,2、顶层容器,JFrame:,一个使用,Swing,的独立图形用户界面应用程序至少有一个使用,JFrame,作为根的包含层次,JApplet:,基于,Swing,的,Applet,至少有一个包含层次,其根是,JApplet,3、中间层容器,2025/11/10 周一,.,10.2.2,在框架内添加组件,如果需要将一些图形用户界面元素加入到框架中,则要在面板组件(,JPanel,),中进行绘制,然后将该面板组件加入到框架的内容窗格(,ContentPane,),中:,/得到,JFrame,的内容窗格对象,Container,contentPane,=,getContentPane,();,Component c=.;,/,将组件加入到内容窗格中,contentPane.add(c,);,面板,JPanel,类本身是容器,它可以容纳其他图形用户界面元素,如按钮、菜单等。,2025/11/10 周一,.,/TestFrame.java,class SimpleFrame extends JFrame,public static final int WIDTH=300;,public static final int HEIGHT=200;,public SimpleFrame(String title),super(title);,/,设置框架大小,setSize(WIDTH,HEIGHT);,JButton btnOk=new JButton(,确定);,getContentPane().add(btnOk);,2025/11/10 周一,.,10.3,布局管理,为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。,Java,的,GUI,组件被放置在容器中,然后由容器的布局管理器对它们的位置和大小进行管理。,在程序中,如果没有指定布局管理器,默认的布局管理器就将组件其放置到框架的中央。,2025/11/10 周一,.,Java,共有,6,种基本的布局管理器,它们分别为:,FlowLayout,(,流式布局),GridLayout,(网格布局),BorderLayout,(边界布局),CardLayout,(卡片布局),GridBagLayout,(网格包布局),null,(空布局),。,容器类默认的,布局管理器为,FlowLayout,。,2025/11/10 周一,.,10.3.1 FlowLayout布局管理器,组件从左上角开始按从左到右、从上到下的方式排列,FlowLayout,的构造函数:,FlowLayout,(),:,生成一个默认的流式布局,FlowLayout(int,alignment),:,可以设定每一行组件的对齐方式,FlowLayout(int,alignment,int,horz,int,vert,),:,可以设定组件间的水平和垂直距离,Applet,和面板的缺省布局:,FlowLayout mylayout=new FlowLayout();,FlowLayout exLayout=new,FlowLayout(FlowLayout.RIGHT);,setLayout(exlayout);/,为容器设置新布局,Container contentPane=getContentPane();,/,增加相应的按钮,for(int i=0;i buttons;i+),JButton addButton=new JButton(add+i);,contentPane.add(addButton);,2025/11/10 周一,.,ch10TestLayoutFrame.java,2025/11/10 周一,.,10.3.2 GridLayout布局管理器,GridLayout,的构造函数:,-,GridLayout,(),:,生成一个单列的网格布局,-,GridLayout(int,row,int,col,),:,生成一个指定行数和列数的网格布局,水平和垂直间距为0,-,GridLayout(int,row,int,col,int,horz,int,vert,),:,生成一个指定行数和列数的网格布局及组件的水平和垂直间隔。,用于将容器区域划分为一个矩形,网格组件按行和列排列,.,Button btn;/,声明按钮数组,String str=1,2,3,4,5,6,7,8,9;,setLayout(new GridLayout(3,3);,btn=new Buttonstr.length;/,创建按钮数组,for(int i=0;istr.length;i+),btni=new Button(stri);add(btni);,2025/11/10 周一,.,ch10TestGridLayout.java,2025/11/10 周一,.,10.3.3,BorderLayout,布局管理器,BorderLayout,的构造函数:,-,BorderLayout,(),:,生成默认的边界布局,-,BorderLayout(int,horz,int,vert,),:,可以设定组件间的,水平和垂直距离,窗口,、,框架和对话框等的缺省布局,组件被置于容器的北、南、东、西或中间位置,.,setLayout(new BorderLayout();,Button btnEast=new Button(,东);,Button btnWest=new Button(,西);,Button btnNorth=new Button(,北);,Button btnSouth=new Button(,南);,Button btnCenter=new Button(,中);,add(btnEast,BorderLayout.EAST);,add(btnWest,BorderLayout.WEST);,add(btnNorth,BorderLayout.NORTH);,add(btnSouth,BorderLayout.SOUTH);,add(btnCenter,BorderLayout.CENTER);,2025/11/10 周一,.,ch10TestBorderLayout.java,2025/11/10 周一,.,10.3.4 CardLayout布局管理器,可存储几个不同的布局。,每个布局就像是一个卡片组中的一张卡片。,在一个给定的时间总会有一张卡片在顶层。,卡片通常为一个,JPanel,对象。,每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。,2025/11/10 周一,.,CardLayout,提供了两种构造函数:,CardLayout(),CardLayout(int horz,int vert),第一种形式生成了一个默认的卡片布局管理器。第二种形式分别在,horz,和,vert,中设定控件之间的水平和垂直间隔。,2025/11/10 周一,.,主要方法,void add(Component panelObj,Object name);,在生成一副牌之后,通过调用由,CardLayout,定义的下列方法之一来激活一张卡片:,void first(Container deck),void last(Container deck),void next(Container deck),void previous(Container deck),void show(Container deck,String cardName),演示,TestCardLayout.java,2025/11/10 周一,.,10.3.5,GridBagLayout,布局管理器,每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,称为显示区域。,构造函数:,Grid,B,ag,Layout(),使用,GridBagLayout,和,GridBagConstaints,辅助类,GridBagLayout,管理的每个组件都与,GridBagConstaints,对象关联,2025/11/10 周一,.,GridBagConstraints,类中包含 用来定位及调整组件大小所需的全部信息。,组件大小不必相同,组件按行和列排列,放置顺序不一定为从左至右和由上至下,获得,GridBagLayout,:,GridBagLayout,gb,=new,GridBagLayout,();,ContainerName.setLayout(gb,);,要使用此布局,必须提供各组件的大小和布局等信息。,2025/11/10 周一,.,GridBagConstraints 类 2-1,成员变量列表:,gridx,gridy,:,指定组件放置于哪个单元中,gridwidth,gridheight,:,指定组件将占用多少行和多少列,weightx,weighty,:,指定在一个,GridBagLayout,中应如何分配空间,这些变量的缺省值为 0,ipadx,ipady,:,指定组件的最小高度和宽度,2025/11/10 周一,.,成员变量列表:,fill,:,指定在单元大于组件的情况下,,,组件如何填充此单元,共有4可选值。缺省值为:,GridBagConstraints.NONE,anchor,:,指定将组件放置在单元中的位置,共有9个可选值。缺省值为:,GridBagConstraints.CENTER,GridBagConstraints 类2-2,2025/11/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、Button 10:gridwidth=GridBagConstraints.REMAINDER,2025/11/10 周一,.,创建复杂界面,TestGridBagLayout.java,2025/11/10 周一,.,10.3.6 Null布局管理器,在某些情况下,用户不想使用布局管理器,需要自己设置组件的位置和大小,这时应取消容器的布局管理器,然后再进行设置,否则用户自定义设置将会被布局管理器覆盖。,取消布局管理器的方法是:,setLayout(null);,2025/11/10 周一,.,用户使用,setLocation()、setSize()、setBounds(),等方法为组件设置位置和大小。,需要注意的是,这种方法会导致程序与系统相关,如不同的分辨率会产生不同的效果。,TestNULLLayout.java,2025/11/10 周一,.,10.4,面板容器,一个面板实质上是一个“窗口内的窗口”。它是能够被放入其他容器中的容器。,面板通常用来简化创建复杂的图形用户界面的过程。,例如,我们要在一个框架窗口中放置16个按钮,和一个文本框。,2025/11/10 周一,.,JPanel,主要用于放置,Swing,轻量级组件,不能独立显示,,JPanel,的对象可以作为顶层容器的内容面板来使用。,JPanel,类构造方法:,public JPanel(),public JPanel(LayoutManager layout),示例,JPanelDemo.java,2025/11/10 周一,.,创建面板及复杂布局,参见,JPanelDemo.java,2025/11/10 周一,.,10.5,事件,目前为止,所有程序都是面向对象的,但是都是以过程化次序执行的。使用了判断和循环语句控制执行流,即程序规定了执行流。,Java GUI,编程是事件驱动的。,在事件驱动编程中,当事件发生,点击按钮,或者鼠标移动,时执行代码。本节介绍,Java,的事件模型。,2025/11/10 周一,.,10.5.1,事件和事件源,事件与事件处理:,事件处理的3要素:,事件源:产生事件的组件,事件(对象):用户对组件的操作所触发的事件对象,事件监听器:负责处理事件的对象,也可称为事件处理器,Java,的事件类和监听器接口大多在,java.awt.event,包中,一些,Swing,组件所特有的事件监听器接口则在,javax.swing.event,中声明,2025/11/10 周一,.,事件层次结构2-1,事件类,说明,事件源,ActionEvent,通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。,Button、List、MenuItem、TextField,AdjustmentEvent,操纵滚动条时会生成此事件。,Scrollbar,ComponentEvent,当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。,Component,ItemEvent,单击复选框或列表项时,或者当一个选择框或一个可选菜单的项被选择或取消时生成此事件。,Checkbox、CheckboxMenuItem、Choice、List,FocusEvent,组件获得或失去键盘焦点时会生成此事件。,Component,2025/11/10 周一,.,事件层次结构2-2,事件类,说明,事件源,KeyEvent,接收到键盘输入时会生成此事件。,Component,MouseEvent,拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组件时,会生成此事件。,Component,ContainerEvent,将组件添加至容器或从中删除时会生成此事件。,Container,TextEvent,在文本区或文本域的文本改变时会生成此事件。,TextField、TextArea,WindowEvent,当一个窗口激活、关闭、,失效、恢复、最小化、打开或退出时会生成此事件。,Window,2025/11/10 周一,.,10.5.2,事件监听,Java,最新的事件处理方法是基于授权事件模型,当事件来源对象因用户的操作(鼠标或键盘),系统会自动触发此事件类对象,E,,并通知所授权的事件监听者,A(,若来源对象已向,A,注册),事件监听者,A,中有处理各种事件的方法(事件处理者1,n),便会处理此事件,E,的各种状况。,2025/11/10 周一,.,授权事件模型:,组件(事件源)都不处理自己的事件,而是将事件处理委托给外部的处理实体(监听器),这种事件处理模型称为,事件的授权处理模型,。不同的事件,可以交由不同类型的监听器去处理,采用授权事件模型进行事件处理的一般步骤为:,第一 确定,Event Source,,知道什么组件要被处理,第二 确定,Event,,知道什么样的事件要被处理,第三 实现,Event Listener,,即编写实现,Event Listener,的事件处理代码,第四 将事件监听器对象与事件源的某种事件关联起来,将事件监听器对象与事件源的某种事件关联起来,这个关联的过程称为向事件源注册(,Registering),事件监听器。,在一个监听器类中可以实现多个监听器接口,通过它可以同时监听同一个事件源上发生的多种事件,同时,通过事件可以获得事件的详细信息,2025/11/10 周一,.,授权事件模型-模型图,授权事件模型图,2025/11/10 周一,.,10.5.3 事件处理方法 一,1.,首先给组件注册监听器,使用下列方法:,addxxxListener,(,事件监听器对象);,2.,实现事件,重写接口中的方法。,public void,actionPerformed,(,ActionEvent,e,),public void,keyPressed(KeyEvent,e),DynamicButtonDemo.java,2025/11/10 周一,.,事件处理方法 二,1,。定义事件类,且要实现,listener interface,接口。,private class ColorAction implements ActionListener ,2,。注册事件类,并给他们发送,event object,ColorAction redAction=new ColorAction(Color.RED);,yellowButton.addActionListener(yellowAction);,2025/11/10 周一,.,使用实现事件监听器接口的方法处理事件时,必须重写监听器接口中的所有方法,尽管有些方法不会用到。,JDK1.1,为某些监听器接口提供了,适配器类,(,XXXAdapter,),当需要对某种事件进行处理时,只需让事件处理类继承事件所对应的适配器类,只重写需要关注的方法即可,而无关的方法就不必实现了。,继承事件适配器类,只需要重写所需要的方法即可。,适配器是一个类而不是接口,因而处理事件的类只能继承一个适配器。当该类需要处理多种事件时,通过继承适配器类的方式是不行的。但可以基于适配器类,用内嵌类(,Inner Class,)的方法来处理这种情况。,addKeyListener(new CharType();,为事件源注册事件监听器的方法同上。,public class CharType extends KeyAdapter,public void keyPressed(KeyEvent e)/,大括号中为处理事件的代码,事件处理方法,二,-,事件适配器,2025/11/10 周一,.,例子:,ch10,CallByKey.java,ch10,ButtonTest.java,ch10,KeyEventDemo.java,2025/11/10 周一,.,10.6,用户界面对象(,UI,),许多Java的编译器提供了可视化地创建图形用户界面。,2025/11/10 周一,.,10.6.1 常用容器组件,JPanel,组件是一个中间容器,用于将小型的轻量级组件组合在一起,JPanel,的缺省布局为,FlowLayout,2025/11/10 周一,.,10.6.1 常用容器组件3-3,容器,JApplet,继承自,Applet,类,与,Applet,不同的是,它默认的布局管理器是,JAppletBorderLayout,,,而,Applet,默认的布局管理器是,FlowLayout,。,可直接向,Applet,窗口中添加组件,但,JApplet,添加组件时必须添加到其内容窗格中。得到内容窗格使用方法:,getContentPane,();,2025/11/10 周一,.,10.6.2 标签(JLabel),既可以显示文本也可以显示图像构造函数如下:,JLabel(Icon icon),:icon,表示使用的图标,JLabel(String text,Icon icon,int align),:align,表示水平对齐方式,其值可以为:,LEFT、RIGHT、CENTER。,其它常用方法,getText(),setText(String text),2025/11/10 周一,.,10.6.3 按钮(JButton),可以使用以下任一构造函数来创建按钮:,JButton,(),:,新建一个空的按钮,JButton(Icon,icon),JButton(String,text),JButton(String,text,Icon,icon,),JButton btnOk=new JButton(,确定,!,);,JButton btnCancel=new JButton(,取消,!,);,getContentPane.add(btnOk);,getContentPane.add(btnCancel);,2025/11/10 周一,.,10.6.4 文本框-JTextField,JTextField,组件允许输入或编辑单行文本,此类的构造函数包括:,JTextField,(),JTextField(Document,doc,String text,int,columns),JTextField(int,columns),JTextField(String,text),JTextField(String,text,int,columns),Container con=getContentPane();,con.setLayout(new FlowLayout();,JLabel jl=new JLabel(“,文本域,”);,con.add(jl);,JTextField tf=new JTextField(20);con.add(tf);,2025/11/10 周一,.,Ch10/,ButtonDemo.java,2025/11/10 周一,.,10.6.4,文本框-,JPasswordField,JPasswordField,组件允许输入或编辑单行文本,并且文本被其他字符代替。,此类的构造函数与单行文本框类似。,其它方法:,char,getPassword,(),char,getEchoChar,(),void,setEchoChar(char,c),2025/11/10 周一,.,Ch10/,DemoPassword.java,2025/11/10 周一,.,10.6.4,文本框-,JTextArea,JTextArea,组件用于接受来自用户的多行文本,可实现可滚动界面,JTextArea,组件可使用下列构造函数创建:,JTextArea,(),JTextArea(int,rows,int,cols),JTextArea(String,text),JTextArea(String,text,int,rows,int,cols),JLabel jl=new JLabel(“,文本区,”);,con.add(jl);,JTextArea ta=new JTextArea(5,10);,con.add(ta);,2025/11/10 周一,.,10.6.5 复选框-JCheckBox,复选框用于为用户提供一组选项,JCheckBox,类具有下列构造函数:,JCheckBox,(),JCheckBox(Icon,icon),JCheckBox(Icon,icon,boolean,selected),JCheckBox(String,text),JCheckBox(String,text,boolean,selected),JCheckBox(String,text,Icon,icon,),JCheckBox(String,text,Icon,icon,boolean,selected),2025/11/10 周一,.,ch10,JCheckBoxDemo.java,2025/11/10 周一,.,10.6.6 单选按钮-JRadioButton,单选按钮允许用户从多个选项中选择其中一个,ButtonGroup,用于在,Swing,中创建组,JRadioButton,对象可使用下列构造函数创建:,JRadioButton,(),JRadioButton(Icon,icon),JRadioButton(Icon,boolean,selected),JRadioButton(String,text),JRadioButton(String,text,boolean,selected),JRadioButton(String,text,Icon,icon,),JRadioButton(String,text,Icon,icon,boolean,selected),2025/11/10 周一,.,ch10,CheckAndRaidoDemo.java,2025/11/10 周一,.,10.6.7 列表框-JList,public,JList,(),public,JList(ListModel,dataModel,),public,JList,(Object,listData,),JList,不支持滚动。要启用滚动,可使用下列代码:,JScrollPane,myScrollPane,=new,JScrollPane,();,myScrollPane.getViewport().setView(dataList,);,String stars=,安东尼奥.班德拉斯,来昂纳多.迪卡普尼奥,桑德拉.布洛克,休.格兰特,朱莉亚.罗伯茨,;,JList moviestars=new JList(stars);,2025/11/10 周一,.,10.6.8 组合框-JComboBox,文本域和下拉列表的组合,在,Swing,中,组合框由,JComboBox,表示,构造函数如下:,public,JComboBox,(),:,此构造函数使用缺省数据模型创建,JComboBox,public,JComboBox(ComboBoxModel,asModel,),:,使用现有,ComboBoxModel,中的项目的组合框,public,JComboBox(Object,items),:,包含指定数组元素的组合框,String names=,弗雷德里克,.,福西斯,约翰,.,克里沙姆,玛丽,.,希金斯,.,克拉克,帕特丽夏,.,康威尔,;,JComboBox authors=new JComboBox(names);,2025/11/10 周一,.,ch10,ComboDemo.java,2025/11/10 周一,.,10.6.9,菜单以及弹出式菜单,典型的菜单:,Swing,菜单由,菜单栏、菜单和菜单项,构成。,2025/11/10 周一,.,10.6.9 菜单3-2,JMenuBar,是可通过,JFrame,的根窗格添加至容器的组件。由多个,JMenu,组成,每个,JMenu,在,JMenuBar,中都表示为字符串。,JMenu,在,JMenuBar,下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。,JMenuItem,为,JMenu,中的一个组件,以文本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等,。,2025/11/10 周一,.,1创建菜单步骤,(,a),创建菜单栏,并将菜单栏加入到框架中。,JMenuBar menuBar=new JMenuBar();,setJMenuBar(menuBar);,(b),创建“,File”,菜单、“,Edit”,菜单和“,View”,菜单。,JMenu fileMenu=new JMenu(File);,JMenu editMenu=new JMenu(Edit);,JMenu viewMenu=new JMenu(View);,JMenu optionMenu=new JMenu(Option);,(c),创建子菜单。,JMenuItem pasteItem=new JMenuItem(Paste,P);,2025/11/10 周一,.,(d),将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加入到菜单栏中。,fileMenu.add(newItem);,editMenu.add(pasteItem);,viewMenu.add(optionMenu);,menuBar.add(fileMenu);,menuBar.add(editMenu);,menuBar.add(viewMenu);,2025/11/10 周一,.,2创建复选框和单选按钮菜单项,创建单选按钮菜单项“,Forward”,,并将“,Forward”,菜单项加入到“,Search”,菜单中。,ButtonGroup group=new ButtonGroup();,forwardItem=new JRadioButtonMenuItem(Forward);,group.add(forwardItem);,searchMenu.add(forwardItem);,创建复选框菜单项“,ToolBar”,,并加入到子菜单中。,JCheckBoxMenuItem toolItem=new JCheckBoxMenuItem(ToolBar);,optionMenu.add(toolItem);,2025/11/10 周一,.,3菜单项的使用状态,/初始设置“,Save”,菜单项为禁用状态。,saveItem.setEnabled(false);,4,快捷键和加速器,快捷键显示为带有下划线的字母,加速器则显示为菜单项旁边的组合键。,/设置菜单的快捷键。,fileMenu.setMnemonic(F);,/,设置“,Exit”,菜单项的快捷键为“,T”。,JMenuItem exitItem=new JMenuItem(Exit,T);,/,设置“,Exit”,菜单项的加速器为“,CtrlT”。,exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK);,2025/11/10 周一,.,5弹出式菜单,弹出式菜单的创建和菜单的创建基本相同,也需要新建一个弹出式菜单后再加入菜单项。,/,弹出式菜单。,popup=new,JPopupMenu,();,/,新建弹出式菜单中的“,Cut,”,菜单项和监听器。,cutItemPop,=new,JMenuItem(Cut,C);,popup.add(cutItemPop,);,2025/11/10 周一,.,菜单示例,菜单的用法。,程序代码见,MenuExample.java,。,运行结果如下:,2025/11/10 周一,.,ch10,MenuDemo.java,2025/11/10 周一,.,10.6.10 对话框,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:javaGUI程序设计.ppt
    链接地址:https://www.zixin.com.cn/doc/12611453.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork