第9章 GUI补充案例汇总.docx

上传人:b****6 文档编号:16357944 上传时间:2023-07-12 格式:DOCX 页数:64 大小:179.72KB
下载 相关 举报
第9章 GUI补充案例汇总.docx_第1页
第1页 / 共64页
第9章 GUI补充案例汇总.docx_第2页
第2页 / 共64页
第9章 GUI补充案例汇总.docx_第3页
第3页 / 共64页
第9章 GUI补充案例汇总.docx_第4页
第4页 / 共64页
第9章 GUI补充案例汇总.docx_第5页
第5页 / 共64页
第9章 GUI补充案例汇总.docx_第6页
第6页 / 共64页
第9章 GUI补充案例汇总.docx_第7页
第7页 / 共64页
第9章 GUI补充案例汇总.docx_第8页
第8页 / 共64页
第9章 GUI补充案例汇总.docx_第9页
第9页 / 共64页
第9章 GUI补充案例汇总.docx_第10页
第10页 / 共64页
第9章 GUI补充案例汇总.docx_第11页
第11页 / 共64页
第9章 GUI补充案例汇总.docx_第12页
第12页 / 共64页
第9章 GUI补充案例汇总.docx_第13页
第13页 / 共64页
第9章 GUI补充案例汇总.docx_第14页
第14页 / 共64页
第9章 GUI补充案例汇总.docx_第15页
第15页 / 共64页
第9章 GUI补充案例汇总.docx_第16页
第16页 / 共64页
第9章 GUI补充案例汇总.docx_第17页
第17页 / 共64页
第9章 GUI补充案例汇总.docx_第18页
第18页 / 共64页
第9章 GUI补充案例汇总.docx_第19页
第19页 / 共64页
第9章 GUI补充案例汇总.docx_第20页
第20页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第9章 GUI补充案例汇总.docx

《第9章 GUI补充案例汇总.docx》由会员分享,可在线阅读,更多相关《第9章 GUI补充案例汇总.docx(64页珍藏版)》请在冰点文库上搜索。

第9章 GUI补充案例汇总.docx

第9章GUI补充案例汇总

第九章GUI

案例9-1AWT事件处理机制

一、案例描述

1、考核知识点

编号:

00109002

名称:

AWT事件处理机制

2、练习目标

Ø掌握如何使用AWT事件处理机制

3、需求分析

事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。

为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。

4、设计思路(实现原理)

1)编写类Example01

2)建立一个窗体,名为“第一个窗体”

3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。

4)通过addWindowListener()方法为事件源注册事件监听器对象。

二、案例实现

importjava.awt.*;

importjava.awt.event.*;

publicclassExample01{

publicstaticvoidmain(String[]args){

//建立新窗体

Framef=newFrame("第一个窗体!

");

//设置窗体的宽和高

f.setSize(300,300);

//设置窗体的出现的位置

f.setLocation(300,200);

//设置窗体可见

f.setVisible(true);

//为窗口组件注册监听器

MyWindowListenermw=newMyWindowListener();

f.addWindowListener(mw);

}

}

//创建MyWindowListener类实现WindowListener接口

classMyWindowListenerimplementsWindowListener{

//监听器监听事件对象作出处理

publicvoidwindowClosing(WindowEvente){

Windowwindow=e.getWindow();

window.setVisible(false);

//释放窗口

window.dispose();

}

publicvoidwindowActivated(WindowEvente){

}

publicvoidwindowClosed(WindowEvente){

}

publicvoidwindowDeactivated(WindowEvente){

}

publicvoidwindowDeiconified(WindowEvente){

}

publicvoidwindowIconified(WindowEvente){

}

publicvoidwindowOpened(WindowEvente){

}

}

运行结果如图9-1所示。

图9-1第一个窗体

点击窗体右上角的关闭按钮,窗体关闭。

三、案例总结

1、在AWT事件处理机制中几个比较重要的相关概念,具体如下所示:

●事件对象(Event):

封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。

●事件源(组件):

事件发生的场所,通常就是产生事件的组件。

●监听器(Listener):

负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包含事件处理器)。

●事件处理器:

监听器对象对接收的事件对象进行相应处理的方法。

2、事件对象、事件源、监听器、事件处理器在整个事件处理机制中都起着非常重要的作用,它们彼此之间有着非常紧密的联系,接下来用一个图例来描述事件处理的工作流程,如图9-2所示。

图9-2事件处理流程图

图9-2中,事件源是一个组件,当用户进行一些操作时,如按下鼠标,或者释放键盘等,这些动作会触发相应的事件。

如果事件源注册了事件监听器,则触发的相应事件将会被处理。

案例9-2使用适配器类改进窗体关闭

一、案例描述

1、考核知识点

编号:

00109003

名称:

AWT事件适配器

2、练习目标

Ø掌握如何使用AWT事件适配器。

3、需求分析

JDK提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口的所有方法,但方法中没有任何代码。

程序可以通过继承适配器类来达到实现监听器接口的目的。

为了让初学者熟悉AWT事件适配器,本案例将使用AWT事件适配器优化窗体关闭代码。

4、设计思路(实现原理)

1)编写Example02类

2)建立一个窗体,名为“第一个窗体”

3)定义一个MyWindowListener类继承适配器类WindowAdapter。

4)重写适配器类中的windowClosing()方法

二、案例实现

importjava.awt.*;

importjava.awt.event.*;

publicclassExample02{

publicstaticvoidmain(String[]args){

//建立新窗体

Framef=newFrame("第一个窗体!

");

//设置窗体的宽和高

f.setSize(300,300);

//设置窗体的出现的位置

f.setLocation(300,200);

//设置窗体可见

f.setVisible(true);

//为窗口组件注册监听器

f.addWindowListener(newMyWindowListener());

}

}

//继承WindowAdapter类,重写windowClosing()方法

classMyWindowListenerextendsWindowAdapter{

publicvoidwindowClosing(WindowEvente){

Windowwindow=(Window)e.getComponent();

window.dispose();

}

}

运行结果如图9-3所示。

图9-3运行结果

点击窗体右上角的关闭按钮,窗体关闭。

三、案例总结

在本案例中定义的MyWindowListener类继承了适配器类WindowAdapter,同样实现了关闭窗口的功能,却减少了很多代码。

需要注意的是,几乎所有的监听器接口都有对应的适配器类,通过继承适配器类来实现监听器接口时,需要处理哪种事件,直接重写该事件对应的方法即可。

由于适配器主要是为了减少不必要的代码,所以在方法数不超过3个时候,不需要继承适配器类。

案例9-3窗体事件

一、案例描述

1、考核知识点

编号:

00109004

名称:

窗体事件

2、练习目标

Ø掌握窗体事件的处理

3、需求分析

当对窗体进行操作时,比如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK中提供了一个类WindowEvent用于表示这些窗体事件。

为了让初学者掌握窗体事件的处理,本案例将实现对窗体事件的监听。

4、设计思路(实现原理)

1)编写类Example03,创建一个窗体。

2)创建WindowListener实例对象。

3)通过addWindowListener()方法将窗体对象与窗体监听器绑定。

4)运行程序,对生成的窗体操作,观察控制台输出的内容。

二、案例实现

编写Example03类,代码如下所示:

importjava.awt.*;

importjava.awt.event.*;

publicclassExample03{

publicstaticvoidmain(String[]args){

finalFramef=newFrame("窗体事件");

f.setSize(400,300);

f.setLocation(300,200);

f.setVisible(true);

//使用内部类创建WindowListener实例对象,监听窗体事件

f.addWindowListener(newWindowListener(){

publicvoidwindowOpened(WindowEvente){

System.out.println("窗体打开");

}

publicvoidwindowActivated(WindowEvente){

System.out.println("窗体激活");

}

publicvoidwindowIconified(WindowEvente){

System.out.println("窗体图标化");

}

publicvoidwindowDeiconified(WindowEvente){

System.out.println("窗体取消图标化");

}

publicvoidwindowDeactivated(WindowEvente){

System.out.println("窗体停用");

}

publicvoidwindowClosing(WindowEvente){

System.out.println("窗体正在关闭");

((Window)e.getComponent()).dispose();

}

publicvoidwindowClosed(WindowEvente){

System.out.println("窗体关闭");

}

});

}

}

运行结果如图9-4所示。

图9-4运行结果

从上图可以看出,当对窗口进行操作时,程序监听到了这些窗体事件。

三、案例总结

在本案例中,通过WindowListener对操作窗口的动作事件进行监听,当接收到特定的动作后,就将所触发事件的名称打印出来。

了解了窗体事件,在以后的编程中,可以根据实际需求,在监听器中自定义窗体的处理事件器。

案例9-4鼠标事件

一、案例描述

1、考核知识点

编号:

00109005

名称:

鼠标事件

2、练习目标

Ø掌握鼠标事件的处理

3、需求分析

在图形用户界面中,用户会经常通过鼠标来进行选择、切换界面等操作,这些操作被定义为鼠标事件,JDK中提供了一个MouseEvent类用于表示鼠标事件。

为了让初学者熟悉鼠标事件的处理。

本案例将演示如何监听鼠标事件。

4、设计思路(实现原理)

1)编写一个类Example04,创建一个窗口。

2)创建按钮对象,并在窗口添加按钮组件。

3)为按钮添加鼠标事件监听器。

4)运行程序生成窗体,用鼠标操作窗口中的按钮,观察控制台的输出。

二、案例实现

importjava.awt.*;

importjava.awt.event.*;

publicclassExample04{

publicstaticvoidmain(String[]args){

finalFramef=newFrame("鼠标事件");

//为窗口设置布局

f.setLayout(newFlowLayout());

f.setSize(300,200);

f.setLocation(300,200);

f.setVisible(true);

Buttonbut=newButton("按钮");//创建按钮对象

f.add(but);//在窗口添加按钮组件

//为按钮添加鼠标事件监听器

but.addMouseListener(newMouseListener(){

publicvoidmouseReleased(MouseEvente){

System.out.println("鼠标放开");

}

publicvoidmousePressed(MouseEvente){

System.out.println("鼠标按下");

}

publicvoidmouseExited(MouseEvente){

System.out.println("鼠标移出按钮区域");

}

publicvoidmouseEntered(MouseEvente){

System.out.println("鼠标进入按钮区域");

}

publicvoidmouseClicked(MouseEvente){

System.out.println("鼠标完成点击");

}

});

}

}

运行程序后生成窗体如图9-5所示。

图9-5鼠标事件窗体

用鼠标点击按钮,运行结果如图9-6所示。

图9-6运行结果

三、案例总结

除了本案例中演示的鼠标事件,MouseEvent类中定义了很多常量来标识鼠标动作,具体代码如下。

publicvoidmouseClicked(MouseEvente){

if(e.getButton()==e.BUTTON1){

System.out.println("鼠标左击事件");

}

if(e.getButton()==e.BUTTON3){

System.out.println("鼠标右击事件");

}

if(e.getButton()==e.BUTTON2){

System.out.println("鼠标中键点击事件");

}

}

MouseEvent类中针对鼠标的按键都定义了对应的常量,可以通过MouseEvent对象的getButton()方法获取被操作按键的常量键值,从而判断是哪个按键的操作。

另外,鼠标的点击次数也可以通过MouseEvent对象的getClickCount()方法获取到。

案例9-5键盘事件

一、案例描述

1、考核知识点

编号:

00109006

名称:

键盘事件

2、练习目标

Ø掌握键盘事件的处理

3、需求分析

键盘操作是常用的用户交互方式,例如键盘按下、释放等,这些操作被定义为键盘事件,JDK中提供了一个KeyEvent类表示键盘事件。

为了让初学者掌握键盘事件的处理,本案例将演示如何监听键盘事件。

4、设计思路(实现原理)

1)编写类Example05,创建一个窗体。

2)在窗体中创建文本框对象。

3)为文本框添加键盘事件监听器

4)运行程序,在窗体的文本框中输入内容,观察控制台的输出情况

二、案例实现

importjava.awt.*;

importjava.awt.event.*;

publicclassExample05{

publicstaticvoidmain(String[]args){

Framef=newFrame("键盘事件");

f.setLayout(newFlowLayout());

f.setSize(400,300);

f.setLocation(300,200);

TextFieldtf=newTextField(30);//创建文本框对象

f.add(tf);//在窗口中添加文本框组件

f.setVisible(true);

//为文本框添加键盘事件监听器

tf.addKeyListener(newKeyAdapter(){

publicvoidkeyPressed(KeyEvente){

intKeyCode=e.getKeyCode();//返回所按键对应的整数值

Strings=KeyEvent.getKeyText(KeyCode);//返回按键的字符串描述

System.out.print("输入内容为:

"+s+",");

System.out.println("KeyCode为:

"+KeyCode);

}

});

}

}

运行结果如图9-7所示。

图9-7键盘事件

在文本框中输入“”,控制台输出如图9-8所示。

图9-8运行结果

三、案例总结

本案例中,当在图9-7中的文件框中键入字符时,便触发了键盘事件。

这时,KeyEvent类通过调用getKeyCode()方法将输入内容对应的整数值返回,即keyCode。

在KeyEvent类中还有一个静态方法getKeyText(intkeyCode),它可以将按键内容以String形式返回。

案例9-6FlowLayout布局管理器

一、案例描述

1、考核知识点

编号:

00109008

名称:

FlowLayout布局管理器

2、练习目标

Ø掌握FlowLayout布局管理器的使用

3、需求分析

流式布局管理器是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左向右放置。

为了让初学者熟悉流式布局管理器,本案例将演示FlowLayout布局管理器的用法。

4、设计思路(实现原理)

1)编写类Example06,创建一个名为“流式布局”的窗体。

2)设置窗体中的布局管理器为FlowLayout。

3)创建1个按钮,并为按钮添加点击事件,每点击一次按钮就再生成新的按钮。

二、案例实现

importjava.awt.*;

importjava.awt.event.*;

publicclassExample06{

publicstaticvoidmain(String[]args){

finalFramef=newFrame("流式布局");//创建一个名为流式布局的窗体

//设置窗体中的布局管理器为FlowLayout,所有组件左对齐,水平间距为25,垂直间距为25

f.setLayout(newFlowLayout(FlowLayout.LEFT,25,25));

f.setSize(200,300);//设置窗体大小

f.setLocation(300,200);//设置窗体显示的位置

Buttonbut1=newButton("1");//创建第1个按钮

f.add(but1);//把"第1个按钮"添加到f窗口

//下面的代码是每点击一次“1”就向窗体中添加一个按钮

but1.addActionListener(newActionListener(){//动作事件为第1个按钮添加点击事件

privateintnum=1;//定义变量num,记录按钮的个数

publicvoidactionPerformed(ActionEvente){

f.add(newButton(++num));//向窗体中添加新按钮

//f.setVisible(true);//刷新窗体显示新按钮

}

});

f.setVisible(true);//设置窗体可见

}

}

运行结果如图3-8所示。

图9-9运行结果

三、案例总结

1、FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列,不需要用户明确的设定,但是在灵活性上相对差了点。

2、FlowLayout对象有三个构造方法,如下表所示。

方法声明

功能描述

FlowLayout()

组件默认居中对齐,水平、垂直间距默认为5个单位

FlowLayout(intalign)

指定组件相对于容器的对齐方式,水平、垂直间距默认为5个单位

FlowLayout(intalign,inthgap,intvgap)

指定组件的对齐方式和水平、垂直间距

案例9-7BorderLayout布局管理器

一、案例描述

1、考核知识点

编号:

00109009

名称:

BorderLayout布局管理器

2、练习目标

Ø掌握BorderLayout布局管理器的使用

3、需求分析

BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。

为了让初学者熟悉BorderLayout布局,本案例演示一下BorderLayout布局管理器对组件布局的效果。

4、设计思路(实现原理)

1)编写类Example07,创建一个名为“边界布局”的窗体

2)设置窗体中的布局管理器为BorderLayout

3)创建5个按钮,分别用于填充BorderLayout的5个区域

4)将创建好的按钮添加到窗体中,并设置按钮所在的区域

二、案例实现

importjava.awt.*;

publicclassExample07{

publicstaticvoidmain(String[]args){

finalFramef=newFrame("边界布局");

f.setLayout(newBorderLayout());//设置窗体中的布局管理器

f.setSize(300,300);

f.setLocation(300,200);

f.setVisible(true);

Buttonbut1=newButton("东");//创建新按钮

Buttonbut2=newButton("西");

Buttonbut3=newButton("南");

Buttonbut4=newButton("北");

Buttonbut5=newButton("中");

f.add(but1,BorderLayout.EAST);//设置按钮所在区域

f.add(but2,BorderLayout.WEST);

f.add(but3,BorderLayout.SOUTH);

f.add(but4,BorderLayout.NORTH);

f.add(but5,BorderLayout.CENTER);

}

}

运行结果如图9-10所示。

图9-10运行结果

三、案例总结

1、在BorderLayout布局管理器中,组件组件可以被放置在这五个区域的中任意一个。

BorderLayout布局的效果如图9-11所示。

图9-11BorderLayout效果图

BorderLayout的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。

但需要注意的是,向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到CENTER区域,并且每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2