收藏 分销(赏)

Java图形界面编程.ppt

上传人:快乐****生活 文档编号:1939984 上传时间:2024-05-11 格式:PPT 页数:111 大小:793.04KB 下载积分:20 金币
下载 相关 举报
Java图形界面编程.ppt_第1页
第1页 / 共111页
Java图形界面编程.ppt_第2页
第2页 / 共111页


点击查看更多>>
资源描述
Java图形界面编程章4.1本章任务本章任务掌握掌握Java图形界面设计的基本原理;图形界面设计的基本原理;理解理解java.awt和和javax.swing软件包的类层次结软件包的类层次结构;构;掌握利用掌握利用Java的的GUI组件来创建按钮、标签、组件来创建按钮、标签、列表、面板等组件;列表、面板等组件;掌握掌握Java图形界面的事件模型;图形界面的事件模型;掌握利用掌握利用Java布局管理器来对布局管理器来对Java图形界面图形界面进行布局管理。进行布局管理。2 24.2 基础知识基础知识3 3基本的基本的AWT组件组件图形用户界面图形用户界面(GUI)可以通过键盘或鼠标来可以通过键盘或鼠标来响应用户的操作。响应用户的操作。抽象窗口工具包抽象窗口工具包(AWT)是一组是一组Java类,此组类,此组Java类允许创建图形用户界面类允许创建图形用户界面(GUI)。AWT提供用于创建生动而高效的提供用于创建生动而高效的GUI的各种的各种组件组件。4 4java.awt 包中的类体系结构包中的类体系结构ComponentButtonCheckboxContainerChoiceCanvasTextComponentLabelPanelWindowAppletFrameDialogTextAreaTextField5 5容器容器可以存放组件的区域,可以存放组件的区域,可在容器上进行可在容器上进行绘制和着色绘制和着色 java.awt包中的包中的Container类可直接或间接类可直接或间接派生出两个常用容器:派生出两个常用容器:框架(框架(Frame类)类)和面板(和面板(Panel类)。类)。框架是一个带有边框的独立的窗口。框架是一个带有边框的独立的窗口。面板是包含在窗口中的一个不带边框的面板是包含在窗口中的一个不带边框的区域。区域。6 6容器容器 框架框架框架是独立于框架是独立于Applet和浏览器的一个窗口。和浏览器的一个窗口。可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:Frame():创建一个不含标题的标准窗口创建一个不含标题的标准窗口Frame(String Title):创建一个含有标题的窗口,创建一个含有标题的窗口,这个标题是由参数这个标题是由参数title指定的。指定的。当一个当一个Frame窗口被创建以后,需要调用窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用方法来设置窗口的大小,并调用setVisible()来显示窗口。来显示窗口。7 7容器容器-面板面板面板不是一个单独的窗口,它只是包含面板不是一个单独的窗口,它只是包含在窗口中的一个区域。在窗口中的一个区域。面板是可以将许多组件组合起来的一种面板是可以将许多组件组合起来的一种容器。容器。最简单的创建面板的方式就是通过面板最简单的创建面板的方式就是通过面板的构造函数的构造函数 Panel()Panel()来进行。来进行。必须将面板添加到窗体中。必须将面板添加到窗体中。8 8使用容器示例使用容器示例importjava.awt.*;classPanelTestextendsPanelpublicstaticvoidmain(Stringargs)PanelTestp=newPanelTest();Framef=newFrame(正在测试面板!正在测试面板!);f.add(p);f.setSize(300,200);f.setVisible(true);使用使用GUIGUI组件必组件必须导入该包须导入该包将面板添加将面板添加到到框架窗体中框架窗体中9 9AWT组件组件组件指可以放置在用户界面上的任何东西组件指可以放置在用户界面上的任何东西,可以将组件设置为可见或重新调整其大小。可以将组件设置为可见或重新调整其大小。AWT支持的组件:标签、文本域、文本区、支持的组件:标签、文本域、文本区、按钮、复选框、选择框等。按钮、复选框、选择框等。高级组件包括滚动条、滚动窗格和对话框。高级组件包括滚动条、滚动窗格和对话框。向窗口加入一个组件:首先生成所需组件的向窗口加入一个组件:首先生成所需组件的实例,然后调用实例,然后调用add()方法,此方法是在方法,此方法是在Container类中定义的。类中定义的。1010不同组件不同组件标标签签文本域文本域复选框复选框单选按钮单选按钮文本区文本区按钮按钮1111标签标签可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:Label():新建一个空标签新建一个空标签Label(String labeltext):新建一个包含给定文本的新建一个包含给定文本的标签标签Label(String labeltext,int alignment):新建一个包新建一个包含给定对齐方式的标签,对齐方式可以为含给定对齐方式的标签,对齐方式可以为 Label.LEFT、Label.RIGHT 或或 Label.CENTERv通常用来指明项目的用途通常用来指明项目的用途v标签不可以被用户编辑标签不可以被用户编辑1212文本域文本域可以通过以下任一构造函数来创建:可以通过以下任一构造函数来创建:-TextField():新建一个文本新建一个文本域域 -TextField(int columns):新建一个包含给定列新建一个包含给定列数的文本数的文本域域 -TextField(String s):新建一个包含给定字符新建一个包含给定字符串的文本串的文本域域 -TextField(String s,int columns):新建一个包新建一个包含给定字符串和列数的文本含给定字符串和列数的文本域域 v一种用来输入文本的一种用来输入文本的GUI组件组件v只能接受一行输入只能接受一行输入1313标签和文本域使用示例标签和文本域使用示例importjava.awt.*;classTextLabelDemoextendsFrameLabellblName=newLabel(“名称名称:”);TextFieldtxtName=newTextField(20);publicTextLabelDemo(Stringtitle)super(title);setLayout(newFlowLayout();add(lblName);add(txtName);publicstaticvoidmain(Stringargs)TextLabelDemot=newTextLabelDemo(正在测试组件!正在测试组件!);t.setSize(300,200);t.show();新建一个标签新建一个标签新建一个文本新建一个文本域域添加到窗口添加到窗口1414文本区文本区可以通过以下构造函数来创建:可以通过以下构造函数来创建:-TextArea():新建一个新建一个TextArea-TextArea(int rows,int cols):新建一个包含给新建一个包含给定行数和列数的定行数和列数的TextArea-TextArea(String text,int rows,int cols):新建一新建一个包含给定字符串、行数和列数的个包含给定字符串、行数和列数的TextAreav要接受输入多行文本时使用要接受输入多行文本时使用v可以包括滚动条可以包括滚动条.TextAreatxtComment=newTextArea();add(txtComment);.1515按钮按钮可以使用以下任一构造函数来创建按钮:可以使用以下任一构造函数来创建按钮:-Button():新建一个空的按钮新建一个空的按钮-Button(String text):新建一个包含给定字符串新建一个包含给定字符串的按钮的按钮v按钮是任何按钮是任何GUI都都不可或缺的组件不可或缺的组件v用来捕捉用户操作的最为简便的用来捕捉用户操作的最为简便的方式方式.ButtonbtnOk=newButton(确定确定!);ButtonbtnCancel=newButton(取消取消!);add(btnOk);add(btnCancel);.1616复选框复选框可以使用以下任一构造函数来创建复选框:可以使用以下任一构造函数来创建复选框:-Checkbox():创建一个空的复选框,且未被选创建一个空的复选框,且未被选中中 -Checkbox(String text):创建一个用给定字符串创建一个用给定字符串作为标签的复选框,且未被选中作为标签的复选框,且未被选中 -Checkbox(String text,Boolean on):创建一个标签创建一个标签由参数由参数text指定的复选框,允许通过参数指定的复选框,允许通过参数on设定设定复选框的初始状态。复选框的初始状态。用于多选项的用户输入,用户用于多选项的用户输入,用户可以通过单击复选框来选定或可以通过单击复选框来选定或取消选定某选项。取消选定某选项。1717单选按钮单选按钮可以通过复选框组生成一系列互斥的复选可以通过复选框组生成一系列互斥的复选框框,实现单选按钮功能。实现单选按钮功能。在一组单选按钮中只能选择一个按钮。在一组单选按钮中只能选择一个按钮。首先创建一个首先创建一个 CheckboxGroup 对象。对象。CheckboxGroupcg=newCheckboxGroup();然后再创建各单选按钮。然后再创建各单选按钮。Checkboxmale=Checkbox(男男,cg,true);Checkboxfemale=Checkbox(女女,cg,false);1818复选框和单选按钮使用示例复选框和单选按钮使用示例importjava.awt.*;classQualificationextendsFrameCheckboxt1=newCheckbox(VisualBasic);Checkboxt2=newCheckbox(VisualC+);Checkboxt3=newCheckbox(Java);CheckboxGroupcg=newCheckboxGroup();Checkboxr1=newCheckbox(专科专科,cg,false);Checkboxr2=newCheckbox(本科本科,cg,false);Checkboxr3=newCheckbox(硕士硕士,cg,false);Checkboxr4=newCheckbox(博士博士,cg,false);Labellb1=newLabel(您的学历为:您的学历为:);Labellb2=newLabel(您精通的语言为:您精通的语言为:);新建复选框新建复选框新建一个复新建一个复选框组选框组添加添加单选按单选按钮钮publicQualification(Strings)super(s);setLayout(newGridLayout(10,1);add(lb1);add(r1);add(r2);add(r3);add(r4);add(lb2);add(t1);add(t2);add(t3);publicstaticvoidmain(Stringargs)Qualificationq=newQualification(学识!学识!);q.setSize(400,250);q.show();将单选按钮添将单选按钮添加到窗体加到窗体将复选框添加到窗体将复选框添加到窗体1919选择框选择框用用Choice类可以创建一个选择框类可以创建一个选择框 Choicemoviestars=newChoice();通过通过 addItem()方法可以添加项目方法可以添加项目moviestars.addItem(安东尼奥安东尼奥.班德拉斯班德拉斯);moviestars.addItem(莱昂纳多莱昂纳多.迪卡普尼奥迪卡普尼奥);moviestars.addItem(桑德桑德.布洛克布洛克);moviestars.addItem(休休.葛兰特葛兰特);moviestars.addItem(朱莉亚朱莉亚.罗萡茨罗萡茨);用来向用户显示一个选择列用来向用户显示一个选择列表表2020Java布局管理器布局管理器 用户界面上的组件可以按不同方式排列。用户界面上的组件可以按不同方式排列。Java使用布局管理器来管理这些排列方式使用布局管理器来管理这些排列方式。每当需要重新调整屏幕大小或重新绘制屏幕每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。上任一项目时,就要用到布局管理器。AWT提供一组用来进行布局管理的类,称为提供一组用来进行布局管理的类,称为布局管理器或布局。所有布局都实现布局管理器或布局。所有布局都实现 LayoutManager接口。接口。2121布局类型布局类型Java中的中的布局类型包括以下几种:布局类型包括以下几种:-FlowLayout(流式布局)流式布局)-BorderLayout(边界布局)(边界布局)-GridLayout(网格布局)(网格布局)-GridBagLayout(网格包布局)(网格包布局)-CardLayout(卡片布局)(卡片布局)2222布局类型的选用布局类型的选用每个布局管理器都有自己特定的用途。每个布局管理器都有自己特定的用途。-要按行和列显示几个同样大小的组件,要按行和列显示几个同样大小的组件,GridLayout 会比较合会比较合-要在尽可能大的空间里显示一个组件,就要要在尽可能大的空间里显示一个组件,就要选择选择 BorderLayout 或或 GridBagLayout 2323如何设置布局如何设置布局每个容器(每个容器(Container对象)都有一个与对象)都有一个与它相关的缺省的布局管理器。它相关的缺省的布局管理器。-Applet 的缺省布局是的缺省布局是 FlowLayout 在没有设置新的布局前,在容器中添加在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。组件都按照该容器的缺省布局排列。可以通过可以通过setLayout()方法为容器设置新的方法为容器设置新的布局。布局。2424FlowLayoutFlowLayout的构造函数有:的构造函数有:-FlowLayout():生成一个默认的流式布局生成一个默认的流式布局-FlowLayout(int alignment):可以设定每一行组可以设定每一行组件的对齐方式件的对齐方式-FlowLayout(int alignment,int horz,int vert):可以可以设定组件间的水平和垂直距离设定组件间的水平和垂直距离vApplet和面板的缺省布局和面板的缺省布局v组件从左上角开始按从左组件从左上角开始按从左到右、从上到下的方式排列到右、从上到下的方式排列FlowLayoutmylayout=newFlowLayout();FlowLayoutexLayout=newFlowLayout(FlowLayout.RIGHT);setLayout(exlayout);/为容器设置新布局为容器设置新布局 2525BorderLayout 2-1下面是下面是BorderLayout所定义的构造函数:所定义的构造函数:-BorderLayout():生成默认的边界布局生成默认的边界布局-BorderLayout(int horz,int vert):可可以以设设定定组组件件间间的水平和垂直距离的水平和垂直距离 v窗口窗口、框架和对话框框架和对话框等的缺省布局等的缺省布局v组件可被置于容器的组件可被置于容器的北、南、东、西或中间北、南、东、西或中间位置位置2626BorderLayout 2-2 BorderLayout 类定义了几个常量值以指定相类定义了几个常量值以指定相应区域:应区域:-BorderLayout.NORTH 对应容器的顶部对应容器的顶部-BorderLayout.EAST 对应容器的右部对应容器的右部-BorderLayout.SOUTH 对应容器的底部对应容器的底部-BorderLayout.WEST 对应容器的左部对应容器的左部-BorderLayout.CENTER 对应容器的中部对应容器的中部加入组件方法:加入组件方法:voidadd(ComponentObj,intregion);.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);.2727GridLayoutGridLayout的构造函数如下所示:的构造函数如下所示:-GridLayout():生成一个单列的网格布局生成一个单列的网格布局 -GridLayout(int row,int col):生生成成一一个个设设定定行行数数和和列列数的网格布局数的网格布局 -GridLayout(int row,int col,int horz,int vert):可可以以设设置组件之间的水平和垂直间隔置组件之间的水平和垂直间隔 v用于将容器区域划分用于将容器区域划分为一个矩形网格为一个矩形网格v组件按行和列排列组件按行和列排列.Buttonbtn;/声明按钮数组声明按钮数组Stringstr=1,2,3,4,5,6,7,8,9;setLayout(newGridLayout(3,3);btn=newButtonstr.length;/创建按钮数组创建按钮数组for(inti=0;istr.length;i+)btni=newButton(stri);add(btni);2828GridBagLayout 通过使用以下语法容器可获得通过使用以下语法容器可获得 GridBagLayout:GridBagLayoutgb=newGridBagLayout();ContainerName.setLayout(gb);要使用此布局,必须提供各组件的大小和布要使用此布局,必须提供各组件的大小和布局等信息。局等信息。GridBagConstraints 类中包含类中包含 GridBagLayout 类用来定位及调整组件大小所需的全部信息。类用来定位及调整组件大小所需的全部信息。v组件大小不必相同组件大小不必相同v组件按行和列排列组件按行和列排列v放置顺序不一定为从左放置顺序不一定为从左至右和由上至下至右和由上至下2929GridBagConstraints 类类 2-1成员变量列表:成员变量列表:-gridx,gridy:指定组件放置于哪个单元中指定组件放置于哪个单元中-gridwidth,gridheight:指定指定组件将占用多少行组件将占用多少行和多少列和多少列-weightx,weighty:指定在一个指定在一个 GridBagLayout 中应如何分配空间中应如何分配空间,这些变量的缺省值为这些变量的缺省值为 0-ipadx,ipady:指定组件的最小高度和宽度指定组件的最小高度和宽度3030成员变量列表:成员变量列表:-fill:指定在单元大于组件的情况下指定在单元大于组件的情况下,组件如组件如何填充此单元何填充此单元,共有共有4可选值。缺省值为:可选值。缺省值为:GridBagConstraints.NONE-anchor:指定将组件放置在单元中的位置,指定将组件放置在单元中的位置,共有共有9个可选值。缺省值为:个可选值。缺省值为:GridBagConstraints.CENTER GridBagConstraints 类类2-23131CardLayout可存储几个不同的布局。可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个卡片通常为一个 Panel 对象。对象。每当需要许多面板切换,而每个面板需要每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。显示为不同布局时,可以使用卡片布局。3232Java事件模型事件模型 Java 最新的事件处理方法是基于授权事件模最新的事件处理方法是基于授权事件模型型事件源生成事件并将其发送至一个或多个监事件源生成事件并将其发送至一个或多个监听器听器监听器简单地等待,直到它收到一个事件。监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,一旦事件被接受,监听器将处理这些事件,然后返回。然后返回。3333事件事件在在授权事件模型授权事件模型中,事件是一个描述事件中,事件是一个描述事件源状态改变的对象源状态改变的对象。通过鼠标、键盘与通过鼠标、键盘与 GUI 界面直接或间接交界面直接或间接交互都会生成事件。互都会生成事件。如:按下一个按钮、如:按下一个按钮、通过键盘输入一个字符、选择列表框中的通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等。一项、点击一下鼠标等。3434事件源事件源事件源是一个生成事件的对象事件源是一个生成事件的对象一个事件源可能会生成不同类型的事件一个事件源可能会生成不同类型的事件事件源提供了一组方法,用于为事件注册事件源提供了一组方法,用于为事件注册一个或多个监听器。一个或多个监听器。每种事件的类型都有其自己的注册方法。每种事件的类型都有其自己的注册方法。一般形式为:一般形式为:public void addListener(TypeListener e)3535AWT采取的事件控制过程采取的事件控制过程 监听器对象属于一个类的实例,这个类实监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为现了一个特殊的接口,名为“监听者接口监听者接口”事件源是一个对象,它可以注册一个或多事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。个监听器对象,并向其发送事件对象。事件源将在发生事件时向所有注册的监听事件源将在发生事件时向所有注册的监听器发送事件对象。器发送事件对象。监听器对象使用事件对象中的信息来确定监听器对象使用事件对象中的信息来确定它们对事件的响应。它们对事件的响应。3636按钮单击事件示例按钮单击事件示例publicclassMyEventTestextendsPanelButtonmyButton=newButton(蓝色蓝色);./创建面板或其他创建面板或其他GUI组件组件MyListenermyAction=newMyListener();MyButton.addActionListener(myAction);privateclassMyListenerimplementsActionListenerpublicMyListener()./初始化初始化publicvoidactionPerformed(ActionEventevent)./需要需要为为事件事件进进行的操作行的操作实现了实现了ActionListener接口的监听器接口的监听器实现了实现了actionPerformed方法,方法,以便根据参数以便根据参数 ActionEvent 对对象的信息对事件做出响应象的信息对事件做出响应为按钮事件为按钮事件注册监听器注册监听器3737事件体系结构事件体系结构FocusEventAWTEventActionEventAdjustmentEventComponentEventTextEventItemEventContainerEventInputEventWindowEventPaintEventKeyEventMouseEventEventObject3838AWT 事件类型事件类型 2-1事件类事件类说明说明事件源事件源ActionEvent 通常按下按钮,双击列表项或选通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事中一个菜单项时,就会生成此事件。件。Button、List、MenuItem、TextField AdjustmentEvent 操纵滚动条时会生成此事件。操纵滚动条时会生成此事件。Scrollbar ComponentEvent 当一个组件移动、隐藏、调整大当一个组件移动、隐藏、调整大小或成为可见时会生成此事件。小或成为可见时会生成此事件。Component ItemEvent 单击复选框或列表项时,或者当单击复选框或列表项时,或者当一个选择框或一个可选菜单的项一个选择框或一个可选菜单的项被选择或取消时生成此事件。被选择或取消时生成此事件。Checkbox、CheckboxMenuItem、Choice、List FocusEvent 组件获得或失去键盘焦点时会生组件获得或失去键盘焦点时会生成此事件。成此事件。Component3939AWT 事件类型事件类型 2-2事件类事件类说明说明事件源事件源KeyEvent 接收到键盘输入时会生成此事件。接收到键盘输入时会生成此事件。Component MouseEvent 拖动、移动、单击、按下或释放拖动、移动、单击、按下或释放鼠标或在鼠标进入或退出一个组鼠标或在鼠标进入或退出一个组件时,会生成此事件。件时,会生成此事件。Component ContainerEvent 将组件添加至容器或从中删除时将组件添加至容器或从中删除时会生成此事件。会生成此事件。Container TextEvent 在文本区或文本域的文本改变时在文本区或文本域的文本改变时会生成此事件会生成此事件 。TextField、TextArea WindowEvent 当一个窗口激活、关闭、当一个窗口激活、关闭、失效、失效、恢复、最小化、打开或退出时会恢复、最小化、打开或退出时会生成此事件。生成此事件。Window 4040监听器接口监听器接口监听器通过实现监听器通过实现 java.awt.event 包中定义的包中定义的一个或多个接口来创建。一个或多个接口来创建。在发生事件时,事件源将调用监听器定义在发生事件时,事件源将调用监听器定义的相应方法。的相应方法。有兴趣接收事件的任何监听器类都必须实有兴趣接收事件的任何监听器类都必须实现监听器接口。现监听器接口。4141监听器接口列表监听器接口列表 2-1事件事件监监听器听器 方法方法 ActionListener actionPerformed AdjustmentListener adjustmentValueChanged ComponentListener componentResizedcomponentMovedcomponentShowncomponentHidden ContainerListener componentAddedcomponentRemoved FocusListener focusLost、focusGained ItemListener itemStateChanged 4242监听器接口列表监听器接口列表 2-2事件事件监监听器听器 方法方法 KeyListener keyPressed、keyReleasedkeyTyped MouseListener mouseClicked、mouseEnteredmouseExited、mousePressedmouseReleased MouseMotionListener mouseDragged、mouseMoved TextListener textChanged WindowListener windowActivated、windowDeactivated windowClosed、windowClosingwindowIconified、windowDeiconifiedwindowOpened 4343适配器类适配器类适配器类适配器类 事件监听器接口事件监听器接口 ComponentAdapter ComponentListener ContainerAdapter ContainerListener FocusAdapter FocusListener KeyAdapter KeyListener MouseAdapter MouseListener MouseMotionAdapter MouseMotionListener WindowAdapter WindowListener 为了使事件处理变得简单,为了使事件处理变得简单,Java Java 为为具有多个方法的监听器接口提供适具有多个方法的监听器接口提供适配器类。适配器类实现并提供了一配器类。适配器类实现并提供了一个事件监听器接口中的所有的方法,个事件监听器接口中的所有的方法,但这些方法都是空方法。但这些方法都是空方法。privateclassMyMouseAdapterextendsMouseAdapterprivateColorbgColor;publicMyMouseAdapter(Colorc)bgColor=c;publicvoidmouseClicked(MouseEventmevent)setBackground(bgColor);repaint();4444事件源、监听器和监听器接口事件源、监听器和监听器接口事件源描述事件对象中事件的性质。事件源描述事件对象中事件的性质。每个事件源都被映射至一个或多个事件监听每个事件源都被映射至一个或多个事件监听器,发生事件时需要调用这些事件监听器。器,发生事件时需要调用这些事件监听器。事件源随后通过将事件对象传递至监听器接事件源随后通过将事件对象传递至监听器接口类的方法,将事件信息发送到监听器接口。口类的方法,将事件信息发送到监听器接口。监听器分析事件对象找出事件信息,监听器分析事件对象找出事件信息,以便给以便给出响应出响应。4545任何任何 GUI 对象的获得或失去焦点都被视为对象的获得或失去焦点都被视为焦点事件,并且事件源必须向事件监听器焦点事件,并且事件源必须向事件监听器通知事件对象已失去或已获得焦点。通知事件对象已失去或已获得焦点。焦点监听器需要实现两个方法:焦点监听器需要实现两个方法:focusGained 和和 focusLost。要进行错误检查或数据校验时,对焦点的要进行错误检查或数据校验时,对焦点的捕捉就显得尤其重要。捕捉就显得尤其重要。焦点事件焦点事件4646焦点事件示例焦点事件示例publicvoidfocusLost(FocusEventevent)if(event.getComponent()=ccField&!event.isTemporary()if(!checkFormat(ccField.getText()ccField.requestFocus();实现了当捕捉到失去实现了当捕捉到失去焦点事件时如何响应焦点事件时如何响应 检验失去焦点的组件中检验失去焦点的组件中的文本格式是否正确的文本格式是否正确 如果格式不正确,将焦如果格式不正确,将焦点移回到该组件点移回到该组件 4747窗口事件窗口事件当一个窗口被激活、禁止、关闭、正在关闭、当一个窗口被激活、禁止、关闭、正在关闭、最小化、恢复、打开时将生成窗口事件。最小化、恢复、打开时将生成窗口事件。需要实现的方法如下:需要实现的方法如下:windowActivated、windowClosedwindowClosing、windowDeactivatedwindowDeiconified、windowIconifiedwindowOpened4848窗口事件示例窗口事件示例classMyFrameextendsFramebooleanw;publicMyFrame()w=false;setTitle(测试适配器类测试适配器类);setSize(300,200);MyPanelpanel=newMyPanel();add(panel);addWindowListener(newMyWindowAdapter();privateclassMyWindowAdapterextendsWindowAdapterpublicvoidwindowClosing(WindowEventwevent)if(w)dispose();elseSystem.exit(0);实现了实现了w windowClosing方法方法,以响应窗口关闭时的以响应窗口关闭时的事件事件importjava.awt.*;importjava.awt.event.*;publicclassMyAdapterDemopublicstaticvoidmain(Stringargs)MyFramefrm=newMyFrame();frm.show();4949在按下或释放键盘上的一个键时,将生在按下或释放键盘上的一个键时,将生成键盘事件。成键盘事件。keyEvent 类包含用来表示按下或点击的类包含用来表示按下或点击的键的常量。键的常量。生成生成 keyEvent 时将调用时将调用 keyListener。如果程序需要处理特殊的键,如方向键,如果程序需要处理特殊的键,如方向键,需要通过调用需要通过调用keyPressed()方法来处理。方法来处理。键盘事件键盘事件publicvoidkeypressed(keyEventk)intkeyCode=k.getKeyCode();if(keyCode=k.VK_RIGHT&k.isShiftDown().检测用户是否按下了检测用户是否按下了Shift+Shift+右箭头键右箭头键 5050键盘事件示例键盘事件示例classMyPanelextendsPanelpublicMyPanel()TextFieldtField=newTextField(20);add(tField);MyKeyAdapterbAction=newMyKeyAdapter();tField.addKeyListener(bAction);privateclassMyKeyAdapterextendsKeyAdapterpublicvoidkeyPressed(KeyEventkevent)setBackground(Color.blue);repaint();publicvoidkeyReleased(KeyEventkevent)setBackground(Color.red);repaint();publicvoidkeyTyped(KeyEventkevent)if(kevent.getKeyChar()=x)System.exit(0);按下键时背景变为兰色,按下键时背景变为兰色,释放键时背景变为红色,释放键时背景变为红色,输入字符输入字符x x时退出程序时退出程序5151鼠标事件鼠标事件 任何时候移动、单击、按下或释放鼠标,任何时候移动、单击、按下或释放鼠标,都会生成鼠标事件。都会生成鼠标事件。鼠标事件有两种监听器:鼠标事件有两种监听器:MouseListener 和和 MouseMotionListener。需要实现的方法如下:需要实现的方法如下:mouseClicked、mouseEntered、mouseExited mousePressed、mouseReleased mouseDragged、mouseMoved 5252publicvoidmouseClicked(MouseEventm)intx=m.getX();inty=m.getY();intclickCount=m.getClickCount();if(clickCount=2)Graphicsg=getGraphics();g.drawString(鼠标双击!鼠标双击!,x,y);g.dispose();鼠标事件示例鼠标事件示例获得点击鼠标时鼠标获得点击鼠标时鼠标指针的指针的
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

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

客服