Java语言6响应用户输入.ppt

上传人:wuy****n92 文档编号:70792524 上传时间:2023-01-28 格式:PPT 页数:46 大小:1.12MB
返回 下载 相关 举报
Java语言6响应用户输入.ppt_第1页
第1页 / 共46页
Java语言6响应用户输入.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《Java语言6响应用户输入.ppt》由会员分享,可在线阅读,更多相关《Java语言6响应用户输入.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java语言程序设计语言程序设计资源与环境科学学院资源与环境科学学院第六章第六章 响应用户输入响应用户输入一个简单的界面程序一个简单的界面程序import java.awt.*;import java.awt.*;public class TestFrame public class TestFrame public static void main(String args)public static void main(String args)Frame f=new Frame(My Frame Programming!);Frame f=new Frame(My Frame Program

2、ming!);f.add(new Button(ok);f.add(new Button(ok);f.setSize(300,300);f.setSize(300,300);f.setVisible(true);f.setVisible(true);/f.dispose();/f.dispose();/释放窗口,加上这句后窗口闪下消失释放窗口,加上这句后窗口闪下消失 此时点击此时点击button或者点击关闭窗口都没或者点击关闭窗口都没有响应,只有最大化,最小化有响应。有响应,只有最大化,最小化有响应。AWT事件处理机制事件处理机制 三个重要的概念三个重要的概念事件:用户对组件的一个操作,称之为

3、一个事件事件:用户对组件的一个操作,称之为一个事件事件源:发生事件的组件就是事件源。事件源:发生事件的组件就是事件源。事件处理器:某个事件处理器:某个JavaJava类中的负责处理事件的成员方法。类中的负责处理事件的成员方法。事件,事件源,事件处理器之间的关系事件,事件源,事件处理器之间的关系事件分类事件分类 按产生事件的物理操作和按产生事件的物理操作和GUIGUI组件的表现效果分类组件的表现效果分类MouseEventMouseEventWindowEventWindowEventActionEventActionEvent 按事件的性质分类:按事件的性质分类:低级事件低级事件语义事件(又叫

4、高级事件)语义事件(又叫高级事件)在中列出多种事件,如果事件的监听器中有多个方法,则在中列出多种事件,如果事件的监听器中有多个方法,则为低级事件,如果只有一个方法就为语义事件。为低级事件,如果只有一个方法就为语义事件。事件监听器事件监听器 一个事件监听器对像一个事件监听器对像负责处理一类事件负责处理一类事件。一类事件的每一种发生情况,分别一类事件的每一种发生情况,分别由事件监听器由事件监听器对象中的一个方法来对象中的一个方法来具体处理具体处理。在事件源和事件监听器对象中进行约定的接口类,在事件源和事件监听器对象中进行约定的接口类,被称为被称为事件监听器接口事件监听器接口。书书P193 事件监听

5、器事件监听器接口类的名称接口类的名称与与事件类的名称事件类的名称通常是通常是相对应相对应的。例如的。例如MouseEventMouseEvent事件类的监听器接口名事件类的监听器接口名为为MouseListenerMouseListener。创建事件监听器类创建事件监听器类import;/myWindowListener.java/myWindowListener.java文件文件import java.awt.event.*;public class myWindowListener implements WindowListenerpublic void windowOpened(Wind

6、owEvent e)public void windowClosing(WindowEvent e)e.getWindow().setVisible(false);(Window)e.getComponent().dispose();System.exit(0);public void windowActivated(WindowEvent e)public void windowClosed(WindowEvent e)public void windowDeactivated(WindowEvent e)public void windowDeiconified(WindowEvent e

7、)public void windowIconified(WindowEvent e)添加事件监听器添加事件监听器import java.awt.*;/打开上例中的打开上例中的TestFrame.java程序程序public class TestFrame public static void main(String args)Frame f=new Frame(My Frame Programming!);f.add(new Button(ok);f.setSize(300,300);f.setVisible(true);f.addWindowListener(new myWindowLis

8、tener();运行后可以顺利的关闭窗口运行后可以顺利的关闭窗口事件监听器编写流程事件监听器编写流程 处理发生在某个处理发生在某个GUIGUI组件上的组件上的*EventEvent事件的某种事件的某种情况,其事件处理的通用编写流程。情况,其事件处理的通用编写流程。编写一个实现了编写一个实现了*ListenerListener接口的事件监听器类;接口的事件监听器类;*ListenerListener类中的用于处理该事件情况的方法中,类中的用于处理该事件情况的方法中,编写处理代码;编写处理代码;调用组件的调用组件的add*Listeneradd*Listener方法,将类方法,将类 *Listen

9、erListener创建的实例对象注册到创建的实例对象注册到GUIGUI组件上。组件上。事件适配器事件适配器 JDKJDK中也提供了大多数事件监听器中也提供了大多数事件监听器接口接口的的最简单的最简单的实现类实现类,称之为,称之为事件适配器事件适配器(Adapter)Adapter)类类。用事件适配器来处理事件,可以用事件适配器来处理事件,可以简化事件监听器简化事件监听器编写编写。在在AWTAWT中就经常用到声明和实现多个接口。无论实现了几个接中就经常用到声明和实现多个接口。无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感口,接口中已定义的方法必须一一实现,如果对某事件不感

10、兴趣,可以不具体实现其方法,而用空的方法体来代替,但兴趣,可以不具体实现其方法,而用空的方法体来代替,但却必须所有方法都要写上。这样一来会有一些不便,为了解却必须所有方法都要写上。这样一来会有一些不便,为了解决这个问题,决这个问题,AWTAWT使用了适配器(使用了适配器(AdapterAdapter),),JavaJava语言为一语言为一些些ListenerListener接口提供了适配器类(接口提供了适配器类(AdapterAdapter)。)。可以通过继可以通过继承事件所对应的承事件所对应的AdapterAdapter类,重写所需要的方法,无关的方类,重写所需要的方法,无关的方法则不用实现

11、。法则不用实现。事件适配器事件适配器/编写一个采用适配器的编写一个采用适配器的YourWindowListener.javaYourWindowListener.java类类importimport java.awt.event.WindowAdapter;java.awt.event.WindowAdapter;importimport java.awt.event.*;java.awt.event.*;public public classclass YourWindowListenerYourWindowListener extendsextends WindowAdapterWindo

12、wAdapter public void public void windowClosingwindowClosing(WindowEvent e)(WindowEvent e)e.getWindow().dispose();e.getWindow().dispose();System.exit(0);System.exit(0);事件适配器事件适配器import java.awt.*;public class TestFrame public static void main(String args)Frame f=new Frame(My Frame Programming!);f.add

13、(new Button(ok);f.setSize(300,300);f.setVisible(true);/f.addWindowListener(new myWindowListener();f.addWindowListener(new YourWindowListener();事件适配器事件适配器 事件适配器类的不足之处:事件适配器类的不足之处:JavaJava不允许一个类继承多个类,因此当一个类已经不允许一个类继承多个类,因此当一个类已经继承了别的类,就不能再使用事件适配器类,此时继承了别的类,就不能再使用事件适配器类,此时只能使用事件监听器接口。只能使用事件监听器接口。如果如果*L

14、istenerListener接口中只有一个方法,可以采用事接口中只有一个方法,可以采用事件监听器,没有必要使用事件适配器。因此对于件监听器,没有必要使用事件适配器。因此对于*ListenerListener接口中只有一个方法,是没有事件适配接口中只有一个方法,是没有事件适配器类的。器类的。在事件监听器中访问非事件源在事件监听器中访问非事件源的其他的其他GUI组件组件import java.awt.*;import java.awt.event.*;/为为button按钮添加关闭窗口的事件按钮添加关闭窗口的事件public class TestFrame implements ActionLi

15、stener public static void main(String args)Frame f=new Frame(My Frame Programming!);f.add(new Button(ok);f.setSize(300,300);f.setVisible(true);f.addWindowListener(new YourWindowListener();public void actionPerformed(ActionEvent e)书书P194 f.dispose()System.exit(0);判断是否正确?判断是否正确?此函数中此函数中 f 在哪里在哪里定义?定义?

16、Btn是否关是否关联事件?联事件?在事件监听器中访问非事件源在事件监听器中访问非事件源的其他的其他GUI组件组件import java.awt.*;import java.awt.event.*;/为为button按钮添加关闭窗口的事件按钮添加关闭窗口的事件public class TestFrame implements ActionListener Frame f=new Frame(My Frame Programming!);public static void main(String args)TestFrame tf=new TestFrame();Button btn=new B

17、utton(ok);tf.f.add(btn);tf.f.setSize(300,300);tf.f.setVisible(true);tf.f.addWindowListener(new YourWindowListener();btn.addActionListener(tf);public void actionPerformed(ActionEvent e)f.dispose()System.exit(0);注意:该写法结构注意:该写法结构不太好,可以改写不太好,可以改写内部类内部类 实现事件处理实现事件处理 内部类(内部类(Inner ClassInner Class)是被定义于另一

18、个类中的类,是被定义于另一个类中的类,使用内部类的主要原因是由于:使用内部类的主要原因是由于:一个内部类的对象可访问外部类的成员方法和变量,一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员;包括私有的成员;实现事件监听器时,采用内部类、匿名类编程非常容实现事件监听器时,采用内部类、匿名类编程非常容易实现其功能;编写事件驱动程序,内部类很方便。易实现其功能;编写事件驱动程序,内部类很方便。内部类所能够应用的地方往往是在内部类所能够应用的地方往往是在AWTAWT的事件处理机的事件处理机制中。制中。在事件监听器中访问非事件源在事件监听器中访问非事件源的其他的其他GUI组件组件import

19、 java.awt.*;import java.awt.event.*;/为为button按钮添加关闭窗口的事件按钮添加关闭窗口的事件public class TestFrame Frame f=new Frame(My Frame Programming!);public static void main(String args)TestFrame tf=new TestFrame();tf.init();public void init()Button btn=new Button(ok);btn.addActionListener(new ActionListener()public v

20、oid actionPerformed(ActionEvent e)f.dispose();System.exit(0););f.add(btn);f.setSize(300,300);f.setVisible(true);f.addWindowListener(new YourWindowListener();事件处理事件处理 一个组件上的一个组件上的一个动作可以产生多种不同类型一个动作可以产生多种不同类型的的事件。事件。一个事件监听器对象一个事件监听器对象可以注册到可以注册到多个事件源上多个事件源上。在在一个事件源上一个事件源上也可以注册对同一类事件进行处也可以注册对同一类事件进行处理的理

21、的多个事件监听器对象多个事件监听器对象。GUI组件的图形操作组件的图形操作Graphics类与图形绘制类与图形绘制 Component.getGraphicsComponent.getGraphics方法,将返回方法,将返回GraphicsGraphics类对类对象。象。Graphics.drawLine(int x1,int y1,int x2,int y2)Graphics.drawLine(int x1,int y1,int x2,int y2)方法。方法。Graphics.drawString(String str,int x,int y)Graphics.drawString(Str

22、ing str,int x,int y)方法。方法。注意:注意:drawStringdrawString方法的坐标参数中方法的坐标参数中(x,y)x,y)为为文本的左下角文本的左下角。编程举例:编程举例:以鼠标在窗口中按下时的位置作为起始点,鼠标释放以鼠标在窗口中按下时的位置作为起始点,鼠标释放时的位置作为终止点,在鼠标释放时将直线画出,并在每条直时的位置作为终止点,在鼠标释放时将直线画出,并在每条直线的起始和终止点位置上打印出它们的坐标值。线的起始和终止点位置上打印出它们的坐标值。Graphics类与图形绘制类与图形绘制 鼠标事件,任何组件都可以激发这些事件。鼠标事件,任何组件都可以激发这些

23、事件。类通过接口类通过接口 MouseListener 来实现,也可以通过来实现,也可以通过适配器适配器 MouseAdapter()类来实现。类来实现。按下鼠标事件按下鼠标事件 mousePressed(MouseEvent e);mousePressed(MouseEvent e);释放鼠标事件释放鼠标事件 mouseReleased(MouseEvent e);mouseReleased(MouseEvent e);其他方法参见其他方法参见 p200 Graphics类与图形绘制类与图形绘制import java.awt.*;import java.awt.event.*;public

24、class DrawLine Frame f=new Frame(“绘图工具绘图工具”);/指定绘图工具的画面指定绘图工具的画面public static void main(String args)new DrawLine().init();public void init()f.setSize(300,300);f.setVisible(true);f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)e.getWindow().dispose();/添加窗口关闭事件添加窗口关闭事件 S

25、ystem.exit(0););Graphics类与图形绘制类与图形绘制f.addMouseListener(new MouseAdapter()/添加鼠标事件添加鼠标事件 int orgX,orgY;public void mousePressed(MouseEvent e)orgX=e.getX();orgY=e.getY();public void mouseReleased(MouseEvent e)Graphics g=f.getGraphics();g.setColor(Color.RED);g.drawLine(orgX,orgY,e.getX(),e.getY(););g.dr

26、awString(orgX+,+orgY,orgX,orgY);g.drawString(e.getX()+,+e.getY(),e.getX(),e.getY();g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30);组件的重绘组件的重绘 上面的实例当窗口最小化等操作后,图形消失了,上面的实例当窗口最小化等操作后,图形消失了,需要进行组件的重绘。需要进行组件的重绘。paint(Graphics g)paint(Graphics g)进行组件的重绘。进行组件的重绘。paint()paint()方法方法将图形的内容重新绘制。将图形的内容重新绘制。AW

27、TAWT线程对组件重绘的调用过程。线程对组件重绘的调用过程。Paint()Paint()方法是由方法是由AWTAWT线程调用管理的,应用程序并不直接调用线程调用管理的,应用程序并不直接调用paint()paint()方法,方法,应用程序调用应用程序调用repaint()repaint()方法方法,由,由repaint()repaint()调调用用update()update()后再调用后再调用paint()paint()方法。方法。组件的重绘组件的重绘import java.awt.*;import java.awt.event.*;public class DrawLine extends

28、Frame/Frame f=new Frame(“绘图工具绘图工具”);/删除该语句删除该语句 int orgX,orgY,endX,endY;public static void main(String args)new DrawLine().init();public void init().this.addMouseListener(new MouseAdapter().public void mouseReleased(MouseEvent e)endX=e.getX();endY=e.getY();Graphics g=getGraphics();.);public void pai

29、nt(Graphics g)g.drawLine(orgX,orgY,endX,endY);只绘制了最后一条直线只绘制了最后一条直线所有线的重绘所有线的重绘 在上次写的在上次写的 MylineMyline类类 中添加中添加 drawMe()drawMe()的方法,实的方法,实现一条线的绘制工作。现一条线的绘制工作。将鼠标绘制的每一条线都记录到将鼠标绘制的每一条线都记录到MylineMyline类类中,添加中,添加一个矢量一个矢量 VectorVector 记录所有记录所有MylineMyline类类集合。集合。添加添加paint()paint()方法,在该方法中调用方法,在该方法中调用 Myl

30、ineMyline类类集合集合中的中的drawMe()drawMe()的方法,绘制每一条线。的方法,绘制每一条线。所有线的重绘所有线的重绘/编写一个线段类编写一个线段类 MyLineMyLineimport java.awt.Point;import java.awt.Point;import java.awt.*;import java.awt.*;public public classclass mylinemyline Point pnt1;Point pnt1;Point pnt2;Point pnt2;/添加绘制直线的方法添加绘制直线的方法public void drawMe(Gra

31、phics g)public void drawMe(Graphics g)g.drawLine(pnt1.x,pnt1.y,pnt2.x,pnt2.y);g.drawLine(pnt1.x,pnt1.y,pnt2.x,pnt2.y);所有线的重绘所有线的重绘import java.awt.*;import java.awt.event.*;import java.util.*;public class Redrawline extends Frame Vector vLines=new Vector();public static void main(String args)new Redr

32、awline().init();public void paint(Graphics g)g.setColor(Color.red);Enumeration e=vLines.elements();while(e.hasMoreElements()myline oneline=(myline)e.nextElement();oneline.drawMe(g);所有线的重绘所有线的重绘public void init()addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)(Window)e.ge

33、tSource().dispose();System.exit(0););addMouseListener(new MouseAdapter()int orgX,orgY;public void mousePressed(MouseEvent e)orgX=e.getX();orgY=e.getY();public void mouseReleased(MouseEvent e)Graphics g=e.getComponent().getGraphics();g.setColor(Color.red);g.drawLine(orgX,orgY,e.getX(),e.getY();vLines

34、.add(new myline(orgX,orgY,e.getX(),e.getY(););this.setSize(300,300);setVisible(true);图像显示图像显示 使用使用Graphics.drawImage(Image img,int x,int Graphics.drawImage(Image img,int x,int y,ImageObserver observer)y,ImageObserver observer)方法显示图像。方法显示图像。import java.awt.*;import java.awt.event.*;public class DrawI

35、mage extends FrameImage img=null;public static void main(String args)new DrawImage().init();X,Y左上角坐标;左上角坐标;Observer用于监视图像创建进度的对象。用于监视图像创建进度的对象。图像显示图像显示 public void init()img=this.getToolkit().getImage(c:test.gif);setSize(300,300);setVisible(true);this.addWindowListener(new WindowAdapter()public void

36、 windowClosing(WindowEvent e)dispose();System.exit(0););public void paint(Graphics g)getGraphics().drawImage(img,0,0,this);菜单菜单 一个完整的菜单系统由菜单一个完整的菜单系统由菜单条、菜单和菜单项组成,它条、菜单和菜单项组成,它们之间的关系如图:们之间的关系如图:JavaJava中与菜单相关的类主要中与菜单相关的类主要有:有:MenuBar(MenuBar(菜单条菜单条)Menu(Menu(菜单菜单)Menultem(Menultem(菜单项菜单项)。菜单菜单import

37、 java.awt.*;import java.awt.event.*;public class TestMenuBar MenuBar menubar=new MenuBar();/创建菜单条对象创建菜单条对象Menu fileM=new Menu(File);/创建各菜单创建各菜单Menu editM=new Menu(Edit);/创建各菜单创建各菜单MenuItem fileMI1=new MenuItem(New);/创建各菜单项创建各菜单项CheckboxMenuItem fileMI5=new CheckboxMenuItem(Quit,true);Menu filePrint=

38、new Menu(print);/创建子菜单创建子菜单 MenuItem printM1=new MenuItem(preview);MenuItem printM2=new MenuItem(setting);public static void main(String args)new TestMenuBar();菜单菜单TestMenuBar()FlowLayout fl=new FlowLayout();Frame f=new Frame(TestMenuBar);f.setLayout(fl);menubar.add(fileM);/将菜单加入菜单条将菜单加入菜单条menubar.a

39、dd(editM);fileM.add(fileMI1);/将菜单项加入将菜单项加入file菜单中菜单中filePrint.add(printM1);/将菜单项加入将菜单项加入print菜单中菜单中filePrint.add(printM2);fileM.add(filePrint);/将将print菜单作为菜单项加入菜单作为菜单项加入file菜单菜单fileM.addSeparator();/将一条分割线加入菜单中将一条分割线加入菜单中fileM.add(fileMI5);/将菜单项加入菜单中将菜单项加入菜单中f.setMenuBar(menubar);/把整个菜单系统显示在窗口中把整个菜单

40、系统显示在窗口中f.setBounds(0,0,250,200);f.setVisible(true);f.addWindowListener(new WindowAdapter();为菜单添加事件为菜单添加事件 编写一个编写一个MenuListenerMenuListener类,作为菜单事件响应类。类,作为菜单事件响应类。import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class MenuListener implements ActionListener public void ac

41、tionPerformed(ActionEvent e)if(e.getActionCommand().equals(preview)System.out.println(doing preview);else if(e.getActionCommand().equals(setting)System.out.println(doing Setting);为菜单添加事件为菜单添加事件 将事件类将事件类MenuListenerMenuListener与组件进行关联与组件进行关联import java.awt.*;import java.awt.event.*;public class TestM

42、enuBar TestMenuBar()filePrint.add(printM1);/将菜单项加入将菜单项加入print菜单中菜单中filePrint.add(printM2);fileM.add(filePrint);/将将print菜单作为菜单项加入菜单作为菜单项加入file菜单中菜单中MenuListener m1=new MenuListener();printM1.addActionListener(m1);printM2.addActionListener(m1);布局管理器布局管理器布局管理器布局管理器 一个容器中的各个组件之间的位置和大小关系就称一个容器中的各个组件之间的位置

43、和大小关系就称之为布局。之为布局。JavaJava语言提供了布局管理器来管理组件在容器中的语言提供了布局管理器来管理组件在容器中的布局,而不是直接使用位置坐标来设置各个组件的位布局,而不是直接使用位置坐标来设置各个组件的位置和大小。置和大小。AWTAWT中的布局管理器类:中的布局管理器类:BorderLayoutBorderLayout、FlowLayoutFlowLayout、GridLayoutGridLayout、CardLayoutCardLayout、GridBagLayoutGridBagLayout BorderLayout 边界布局,在一个窗体的边界布局,在一个窗体的4 4个边

44、上放置个边上放置4 4个组件,个组件,第第5 5个组件占用中间剩下的空间。个组件占用中间剩下的空间。例:书例:书P179P179FlowLayout 从左到右,从上到下依次排列。一行放不下就放从左到右,从上到下依次排列。一行放不下就放到下一行。例:书到下一行。例:书P175P175GridLayout 将容器划分成若干行列的网将容器划分成若干行列的网格,在容器上添加组件时,它们格,在容器上添加组件时,它们会按从左到右、从上到下的顺序会按从左到右、从上到下的顺序在网格中排列。在网格中排列。在在GridLayoutGridLayout的构造方法中,的构造方法中,需要指定在容器上划分的网格的需要指定

45、在容器上划分的网格的行、列数。行、列数。例:书例:书P177P177CardLayout 实现将多个组件放在同一容器区域内的交替显示,相当于多实现将多个组件放在同一容器区域内的交替显示,相当于多张卡片摞在一起,在任何时候都只有最上面的一个可见。张卡片摞在一起,在任何时候都只有最上面的一个可见。GridBagLayout 它是它是GridLayoutGridLayout的衍生体,与其说它强制在一个栅格位置的衍生体,与其说它强制在一个栅格位置装配组件,不如说它允许组件占有几个相邻的栅格位置空间,装配组件,不如说它允许组件占有几个相邻的栅格位置空间,它采用一系列约束和权值使控件各就各位。它采用一系列

46、约束和权值使控件各就各位。功能强大,但使用非常复杂,不建议使用。功能强大,但使用非常复杂,不建议使用。学习和开发学习和开发GUI程序建议程序建议 重在掌握重在掌握GUIGUI程序的一些基本原理和开发过程,通过学习程序的一些基本原理和开发过程,通过学习AWTAWT组件可以更容易掌握组件可以更容易掌握GUIGUI程序的基本原理和开发过程,但在程序的基本原理和开发过程,但在GUIGUI程序开发中,应尽量使用程序开发中,应尽量使用SwingSwing组件。组件。查阅查阅JDKJDK文档中的文档中的SwingSwing包,通读一下其中所包含的组件,以包,通读一下其中所包含的组件,以了解了解SwingSw

47、ing提供了哪些提供了哪些GUIGUI组件。组件。在用到某个在用到某个GUIGUI组件时,才有必要仔细阅读这个组件的具体组件时,才有必要仔细阅读这个组件的具体使用帮助。使用帮助。在在JDKJDK的的demodemo程序目录中,或是程序目录中,或是JavaJava指南(可从指南(可从SunSun网站网站下载,英文名下载,英文名 The Java Tutorial)The Java Tutorial)能找到某些组件的应用范能找到某些组件的应用范例。例。本章总结本章总结 事件处理机制,事件监听器,事件适配器事件处理机制,事件监听器,事件适配器 GUIGUI组件的图形操作,组件的重绘实现方法组件的图形

48、操作,组件的重绘实现方法 图像的显示方式图像的显示方式 常用的常用的AWTAWT组件,组件,CanvasCanvas,ContainerContainer,PanelPanel与与ScrollPanelScrollPanel等组件等组件 菜单的创建以及为菜单添加事件菜单的创建以及为菜单添加事件 布局管理器的种类,以及各自的特点布局管理器的种类,以及各自的特点思考题思考题 什么是事件、事件源和事件处理器,并描述三者什么是事件、事件源和事件处理器,并描述三者的工作关系。描述事件处理的编码实现过程。的工作关系。描述事件处理的编码实现过程。描述事件监听器类和事件适配器类的关系与区别。描述事件监听器类和事件适配器类的关系与区别。描述在窗口上画直线的程序编写过程和组件重绘描述在窗口上画直线的程序编写过程和组件重绘的原理。的原理。如何创建菜单,如何添加菜单事件。如何创建菜单,如何添加菜单事件。布局管理器的种类和特点。布局管理器的种类和特点。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁