版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,图形用户界面设计,谈谈你对Java事件处理的理解,事件处理模型基于继承的事件处理模型(JDK1.0)JDK1.0中,事件处理是基于继承的,事件先发送到组件,然后沿容器层次向上传播。没有被组件处理的事件会自动地继续传播到组件的容器。基于继承的事件处理模型的特点事件只能由产生这个事件的组件或包含这个组件的容器处理。大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路传播,直到最后被抛弃,为了处理事件,必须创建一个庞大的handleEvent()方法,该方法中包含的大量的逻辑判断,给编程带来困难。不能为每一种事件特定指定操作动作,基于代理的事件处理模型
2、(JDK1。1)在这个模型中,事件被直接送往产生这个事件的组件,对于每一个组件注册一个或多个称为监听者的类,这些类包含事件处理器,用来接收和处理这个事件。监听者就是实现了Listener接口的类。事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口基于代理的事件处理模型的特点事件不会被意外地处理。在层次模型中,一个事件可能传播到容器,并在非预期的层次被处理。有可能创建并使用适配器(adapter)类对事件动作进行分类。有利于把工作分布到各个类中。重点学习这种事件处理模型,1.getContentPane().add(btn)是添加按钮。2.类实现implementsActionL
3、istener那它就是一个监听器;(下一行的this就是监听器)btn.addActionListener(this)是按钮添加监听器。就是说,点击按钮,触发监听器,监听器自动调用它的actionPerformed(ActionEvente)方法处理事件!3.如果多个按钮的话,你可以根据按钮的名字判断!,importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;publicclassTestextendsJFrameim
4、plementsActionListenerpublicTest()JButtonb1=newJButton(b1);JButtonb2=newJButton(b2);b1.addActionListener(this);b2.addActionListener(this);,this.add(b1,BorderLayout.CENTER);this.add(b2,BorderLayout.SOUTH);publicvoidactionPerformed(ActionEvente)if(e.getActionCommand().equals(b1)System.out.println(youc
5、lickb1);elseif(e.getActionCommand().equals(b2)System.out.println(youclickb2);publicstaticvoidmain(Stringargs)Testt=newTest();t.setSize(300,200);t.setVisible(true);t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,(1)ActionEvent事件的相应的事件处理器接口是ActionListener,所在的类包是java.awt.event。(2)取得窗口容器的代码是JFrame()。(
6、3)向JTextArea的win.setVisible()方法传递false参数可以防止用户修改文本,填空,(4)BorderLayout布局类所在的类包是java.awt。(5)一个是JMenu的JMenuItem应称为子菜单。(6)setJMenuBar(JMenuBarbar)方法把JMenuBar添加到JFrame。,填空,(7)JFrame的缺省布局管理器是BorderLayout。(8)清空内存的命令是publicvoidsetText(Strings)。(9)Swing的事件处理机制包括事件源、事件和事件处理。,填空,(10)若要取消布局管理器,需要调用setLayout(nul
7、l)方法。(11)所有组件都可以通过setBounds(inta,intb,intwidth,intheight)方法向容器中添加组件。(12)publicvoidsetForeground(Colorc)方法用于设置组件的前景色,publicvoidsetBackground(Colorc)方法用于设置组件的背景色。,填空,(13)下列Applet在窗口中实现一个不可编辑的TextField,并且显示“ok”。请填写正确的程序在横线处。,importjava.applet.Applet;importjava.awt.*;publicclassTest13extendsAppletTextFi
8、eldtf;publicvoidinit()setLayout(newGridLayout(1,0);tf=newTextField(“ok”);tf.setEditable(false);add(tf);,填空,3、编写应用程序,有一个标题为“计算”的窗口。窗口中添加两个文本区,当在一个文本区中输入若干个数字时,另一个文本区同时对输入的数进行求和运算并求出平均值。也就是说,随着输入的变化,另一个文本区不断更新求和及平均值。,importjava.util.*;importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicc
9、lassTextEveextendsAppletimplementsTextListenerTextAreatext1,text2;publicvoidinit()/初始化text1=newTextArea(6,15);text2=newTextArea(6,15);add(text1);add(text2);text2.setEditable(false);text1.addTextListener(this);text2.setText(pleaseenterthenumberinleftboxanduse,);/提示语句publicvoidtextValueChanged(TextEve
10、nte)inti;doubleSum,Avg;if(e.getSource()=text1),Sum=0;Avg=0;StringNum=text1.getText();/读取内容StringTokenizerNumChe=newStringTokenizer(Num,n);intn=NumChe.countTokens();inta=newintn;for(i=0;in;i+)/将值放到数组中ai=Integer.parseInt(NumChe.nextToken();Sum=a0;for(i=1;in;i+)Sum+=ai;/求和Avg=Sum/n;/求平均值StringRESum=Str
11、ing.valueOf(Sum);StringREAvg=String.valueOf(Avg);text2.setText(TheSumis:+RESum+n+TheAvgis:+REAvg);/显示,4、编写一个应用程序,设计四个按钮,分别用于加、减、乘、除运算。窗口中还有三个文本框。单击相应的按钮,两个文本框输入数据,第三个文本框中显示结果。要求处理NumberFormatException。,importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.math.*;publicclassHomework1
12、0_3publicstaticvoidmain(Stringargs)MathWindowwin=newMathWindow();classMathWindowextendsJFrameJTextFieldtext1,text2,text3;JPanelps,pn;MathWindow()text1=newJTextField(10);text2=newJTextField(10);,text3=newJTextField(10);JButtonbutton1,button2,button3,button4;button1=newJButton(加);button2=newJButton(减)
13、;button3=newJButton(乘);button4=newJButton(除);ps=newJPanel();pn=newJPanel();pn.add(text1);pn.add(text2);pn.add(text3);ps.add(button1);ps.add(button2);ps.add(button3);ps.add(button4);add(pn,BorderLayout.CENTER);,add(ps,BorderLayout.SOUTH);setBounds(100,100,370,150);setVisible(true);validate();button1.
14、addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Strings1=text1.getText();Strings2=text2.getText();tryBigIntegern1=newBigInteger(s1);BigIntegern2=newBigInteger(s2);n2=n1.add(n2);text3.setText(n2.toString();catch(NumberFormatExceptionee)text3.setText(请输入数字字符);text1.setText(
15、null);,text2.setText(null););button2.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Strings1=text1.getText();Strings2=text2.getText();tryBigIntegern1=newBigInteger(s1);BigIntegern2=newBigInteger(s2);n2=n1.subtract(n2);text3.setText(n2.toString();catch(NumberFormatExcepti
16、onee)text3.setText(请输入数字字符);text1.setText(null);,text2.setText(null););button3.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Strings1=text1.getText();Strings2=text2.getText();tryBigIntegern1=newBigInteger(s1);BigIntegern2=newBigInteger(s2);n2=n1.multiply(n2);text3.setTe
17、xt(n2.toString();catch(NumberFormatExceptionee)text3.setText(请输入数字字符);text1.setText(null);,text2.setText(null););button4.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Strings1=text1.getText();Strings2=text2.getText();tryBigIntegern1=newBigInteger(s1);BigIntegern2=newBig
18、Integer(s2);if(n2.toString()=0)text3.setText(除数不能为0);elsen2=n1.divide(n2);,text3.setText(n2.toString();catch(NumberFormatExceptionee)text3.setText(请输入数字字符);text1.setText(null);text2.setText(null););setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);,5、什么是MVC结构,使用MVC结构,学习教材例10.27,编写计算矩形面积。,MVC是三个单词的缩写
19、,这三个单词分别为:模型(Model)视图(View)控制(Controller)。,MVC架构是交互式应用中广泛使用的架构。它将对象按功能进行划分,尽可能地最小化对象之间的耦合度。MVC架构与传统的应用程序架构输入,处理,输出给用户接口的模型相对应。它们也与基于域的多层企业级WEB应用相对应。MVC架构将应用分为三层模型,视图,控制,并减弱它们各自的责任。每一层处理特定的任务并对其它层有特殊的责任。,A.模型存储业务数据和控制访问与修改业务数据的业务逻辑或操作。表现上看,模型与软件中的函数功能有些相似。当模型改变时会通知视图并为视图提供了查询模型状态的能力。它也为控制器提供了访问封装在模型中
20、的应用功能函数的能力。,B.视图展示模型中的内容。它访问模型中的数据并完成数据的显示工作。当模型改变时它会即时更新数据的展示。视图也完成将用户的输入传递到控制器的功能。,C.控制器定义了应用程序的行为。它分派用户的请求然后调用相应的视图来展示。它解析用户的输入然后与模型中完成相应功能的事件处理相匹配。在标准的GUI客户端应用中,用户输入包括点击按钮和选择菜单。在WEB应用中,它们则是WEB层中的HTTPGET和POST请求。控制器选择相应的视图来显示是基于用户与模型相互交互的结果。一个典型的应用是所有相关的功能由一个控制器来处理。一些应用针对不同的客户端类型采用不同的控制器来处理,因为视图的交
21、互与选择可能因客户端类型的不同而有所不同。,importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassJXpublicstaticvoidmain(Stringargs)WindowRectanglewin=newWindowRectangle();win.setTitle(使用MVC结构);classWindowRectangleextendsJFrameimplementsActionListenerRectanglerectangle;JTextFieldtextA,textB;JTextAreashow
22、Area;JButtoncontrolButton;WindowRectangle()init();setBounds(100,100,630,160);setVisible(true);,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);voidinit()rectangle=newRectangle();textA=newJTextField(5);textB=newJTextField(5);showArea=newJTextArea();controlButton=newJButton(计算面积);JPanelpNorth=newJPanel();pNorth.add(newJLabel(边A);pNorth.add(textA);pNorth.a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年万载县医疗事业单位人员招聘笔试备考试题及答案解析
- 2026年瓮安县带编教师招聘笔试备考题库及答案解析
- 2026年九寨沟县医疗事业单位人员招聘考试备考试题及答案解析
- 2026年开江县医疗事业单位人员招聘笔试备考题库及答案解析
- 2026年麻阳苗族自治县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年木垒哈萨克自治县医疗事业单位人员招聘笔试备考题库及答案解析
- 2026年武强县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年永清县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年康乐县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年岳池县医疗事业单位人员招聘笔试备考题库及答案解析
- 2024北京低碳清洁能源研究院招聘笔试参考题库附带答案详解
- 立体构成与现代雕塑业界优制课件
- 采访活动资料整理格式
- 水泥路面灌缝施工方案
- 二次函数的区间最值问题
- GB/T 42690-2023造船甲板机械绞缆筒外形
- 新外研版高二英语选择性必修三Unit5 nature in architecture课件(精编)
- GB/T 6111-2018流体输送用热塑性塑料管道系统耐内压性能的测定
- 海湾-gst-qkp01控制器说明书fas ver
- 【部编人教版】道德与法治二年级上册全册完整课件
- 《汽车文化》中职配套教学课件
评论
0/150
提交评论