Java——GUI(图形用户界面设计)

事件处理:事件:用户的一个操作(例如:点击一下鼠标,或者敲击一下键盘)事件源:被操作的组件(例如:在一个窗体中的一个按钮,那个按钮就属于被操作的组件,按钮就是事件源)监听器:一个自定义的对象,实现了监听接口,包含事件处理方式,把监听器添加在事件源上,当事件发生的时候,虚拟机就会自动调用监听器中的事件处理方法
package com.yy.gui;
//GUI功能简单运用
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Demo1_Frame {public static void main(String[] args) {Frame f = new Frame("琪老师好!");f.setSize(400,600);                         //设置窗体大小(宽和高)f.setLocation(500, 50);                     //设置窗体初始的位置f.setIconImage(Toolkit.getDefaultToolkit().createImage("beyond.jpg"));Button b1 = new Button("我就不~不滚咋滴!!!"); //设置按钮1,按钮名称:我就不~不滚咋滴!!!Button b2 = new Button("略略略");              //设置按钮2,按钮名称:略略略f.add(b1);f.add(b2);f.setLayout(new FlowLayout());              //设置布局管理器//f.addWindowListener(new MyWindowAdapter());//WindowListenter是一个接口,不能直接new一个接口,但是我们可以传这个接口的子类对象/*//窗体监听//优化2,匿名内部类//public void windowClosing(WindowEvent e)窗口正处在关闭过程中时调用。此时可重写关闭操作f.addWindowListener(new WindowAdapter(){    //WindowListener是一个接口,找个类去实现这个接口,重写接口中的所有方法,然后去调用自己想要的方法,继承WindowAdapter这个类//不能new接口,但是可以new这个接口的子类对象public void windowClosing(WindowEvent e){   //重写所需要的方法System.exit(0);}});//new WindowAdapter(){}//new      类                 (){}  表示去继承这个类*//*//鼠标监听,鼠标点击进行指定操作//public void mouseClicked(MouseEvent e)鼠标按键在组件上单击(按下并释放)时调用//public void mouseReleased(MouseEvent e)鼠标按钮在组件上释放时调用b1.addMouseListener(new MouseAdapter(){     //匿名内部类,添加一个鼠标监听,鼠标适配器public void mouseClicked(MouseEvent e){//单击ClickedSystem.exit(0);                     //退出}public void mouseReleased(MouseEvent e){//释放Released    System.exit(0);}});*/  /*//键盘监听以及键盘事件(满足某种条件就去执行对应的方法)//public int getKeyCode()返回与此事件中的键关联的整数 keyCode//返回:   键盘上实际键的整数代码b1.addKeyListener(new KeyAdapter(){         //匿名内部类,添加一个键盘监听器public void keyReleased(KeyEvent e){    //KeyEvent  键盘事件//System.out.println(e.getKeyCode());   //打印键盘上的键所对应的整数值第一种形式if(e.getKeyCode() == 32){           //32对应的键是空格键System.exit(0);                 //如果是空格键,退出程序}//第二种形式 if(e.getKeyCode() == KeyEvent.VK_SPACE){        //类名.  去调用这个静态常量就可以//KeyEvent.VK_SPACE//类名             .         VK_SPACE代表空格   VK_ENTER代表回车  ...System.exit(0);                 //退出程序}}});                                         //KeyListener也是一个接口,*//*//动作监听b2.addActionListener(new ActionListener() {         //添加动作监听,应用场景就是暂停视频和播放视频@Overridepublic void actionPerformed(ActionEvent e) {    //无论是敲空格键还是鼠标左键单击,都会退出java虚拟机,因为空格键还是鼠标左键单击是系统默认的System.exit(0);}});*/f.setVisible(true);                         //设置窗体可见}}//WindowAdapter:适配器,也是一个抽象类,定义为抽象类是为了,不想让你去创建这个类的对象,因为,就算创建了这个类的对象,调用这个类的空方法也是没有任何意义的。
//该抽象类实现了WindowListener这个接口,并且重写了WindowListener这个接口中的所有的出抽象方法
//方便在于:如果以后你想用WindowListener这个接口,只需要继承WindowAdapter这个类就可以了,想用那个方法,就重写那个方法即可
//WindowAdapter该类中的方法都是空方法;
//目的在于:就是为了提供给子类去使用这些方法,而不是自己用的,然后,WindowAdapter这个类把这些方法都给重写了,当子类去使用的时候,想用哪个方法,就直接重写哪个方法即可/*class MyWindowListener implements WindowListener{     //创建WindowListener这个抽象类的子类对象
//如果一个抽象类中,没有定义任何的抽象方法,那这个抽象类的作用只有一个,不允许其他的类来创建这个抽象类的对象@Overridepublic void windowOpened(WindowEvent e) {           //重写WindowListener这个接口里面的所有方法}@Overridepublic void windowClosing(WindowEvent e) {System.out.println("Closing");System.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {System.out.println("Closed");}@Overridepublic void windowIconified(WindowEvent e) {}@Overridepublic void windowDeiconified(WindowEvent e) {}@Overridepublic void windowActivated(WindowEvent e) {}@Overridepublic void windowDeactivated(WindowEvent e) {}}
*//*优化1 class MyWindowAdapter extends WindowAdapter{               //创建一个类MyWindowAdapter去继承WindowAdapter(适配器)这个抽象类
//该抽象类实现了WindowListener这个接口,并且重写了WindowListener这个接口中的所有的出抽象方法,方便在于:如果以后你想用WindowListener这个接口,只需要继承WindowAdapter这个类就可以了,想用那个方法,就重写那个方法即可
//这里就不会去强制重写任何方法,用哪个重写哪个方法就可以 public void WindowClosing(WindowEvent e){               System.exit(0);}
}
*/
 * A:什么是适配器*      在使用监听器的时候,需要定义一个类事件监听器接口*      通常接口中有多个方法,而程序中不一定所有的都能用到,但有必须重写所有的方法,这很繁琐*      适配器简化了这些操作,我们定义监听器时只要继承适配器,然后重写需要的方法即可* B:适配器原理(Adapter就是一个适配器)*      适配器就是一个类,实现了监听器接口,所有的抽象方法都重写了,但是方法全是空的*      适配器类需要定义成抽象的,因为创建该类对象,调用空方法都是没有意义的*      目的就是为了简化程序员的操作,定义监听器时继承适配器,只重写需要的方法就可以了
 * 适配器设计模式* 例如:鲁智深(花和尚)。是个和尚(假如,和尚每天要做的事情为打坐、念经、撞钟、习武),现在有一个  和尚  接口,该接口有打坐、念经、撞钟、习武这四个方法,* 但是鲁智深只喜欢习武,所以,让鲁智深去实现  和尚  这个接口是不合适的* 首先有个接口  和尚 ,和尚 这个接口里面有一些方法打坐、念经、撞钟、习武* 而鲁智深只喜欢习武,所以,这时候,我们就可以创建一个中间类  天罡星 ,这个  天罡星  这个类实现了这个   和尚  接口,实现  和尚  这个接口之后,重写了  和尚  这个接口里面的所有抽象方法* 天罡星 这个类重写了  和尚  里面的所有抽象方法,这些抽象方法都是空的,为了防止别人拿这个  天罡星 这个类去创建对象,于是就把  天罡星 这个类给声明成抽象类* 把  天罡星  这个类声明成抽象类的原因:不想让其他类去创建本类对象,因为创建也是没有意义的,天罡星 这个类里面的方法都是空的,这里的  天罡星 这个类就起到一个过渡的作用* 然后,创建一个    鲁智深   类,让  鲁智深  这个类去继承  天罡星  这个抽象类,于是,鲁智深 这个类 想重写哪个方法就重写哪个方法就行了,由于鲁智深只想习武,于是只需要重写  习武  这个方法就行了* 然后,重写 习武 这个方法,输出倒拔垂杨柳,拳打镇关西,大闹野猪林...即可* 这时候,唐三藏来了,而他只喜欢打坐,念经,撞钟,但是他不喜欢习武,于是,就可以定义一个  唐三藏  类去继承  天罡星  这个抽象类  然后重写他需要的方法即可;

代码如下

package com.yy.适配器;public class Demo1_Adapter {public static void main(String[] args) {鲁智深  yy = new 鲁智深();            //创建  鲁智深  这个类对象唐三藏 wsq = new 唐三藏();            //创建  唐三藏  这个类对象yy.习武();                           //调用  鲁智深  这个类中的  习武  方法wsq.念经();                          //调用  唐三藏  这个类中的  念经  方法wsq.打坐();                          //调用  唐三藏  这个类中的  打坐  方法wsq.撞钟();                          //调用  唐三藏  这个类中的  撞钟  方法}}interface 和尚{                               //定义一个 和尚  接口public void 打坐();                       //这些是  和尚 这个接口的所有抽象方法public void 念经();public void 撞钟();public void 习武();
}//适配器设计模式
abstract class 天罡星 implements 和尚{       //声明成抽象类的原因是:不想让其他类去创建本类对象,因为创建也是没有意义的,方法都是空的
//这里的  天罡星  这个类就充当着适配器的作用,作为中间类@Overridepublic void 打坐() {      //重写  和尚 这个接口里面的所有抽象方法,但是都是空方法,调用空方法是没有任何意义的}@Overridepublic void 念经() {}@Overridepublic void 撞钟() {}@Overridepublic void 习武() {}}
class 鲁智深 extends 天罡星{      //鲁智深  这个类去继承   天罡星  这个抽象类public void 习武() {System.out.println("倒拔垂杨柳");System.out.println("拳打镇关西");System.out.println("大闹野猪林");System.out.println("......");}//这里并没有重写toString方法,而是采用   类名.    的方法调用类中的每个方法
}
class 唐三藏 extends 天罡星{public void 打坐(){System.out.println("我佛慈悲");}public void 念经() {System.out.println("阿弥陀佛");}public void 撞钟() {System.out.println("duangduangduang");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python安全攻防---信息收集---IP查询

IP查询是通过当前所获得的URL去查询对应IP地址的过程,可应用Socket库函数中的gethostbyname()获取域名所对用的IP值 程序如下: # -*- coding:utf-8 -*- IP查询import socket ip socket.gethostbyname(www.baidu.com) print(ip)运行结果: …

智能课程表Android版-学年学期星期的实现

上次我们实现了日期和时间的动态显示,这次我们来实现学年,学期,周次的显示,如图: 首先是学年学期的显示: Calendar cCalendar.getInstance(); int yearc.get(Calendar.YEAR); int monthc.get(Calendar.MONTH)1;//Calen…

感染linux脚本程序技术

前言 ---- 本文来源于29A病毒杂志,其上对linux shell病毒技术有了一个综合的阐述,我不想翻译它,我以它的那篇为模板 写了这篇中文的文章,里面的代码我都做了调试. 对于shell编程的程序员来说所谓的shell病毒技术其实根本就是小牛一毛,这点在大家看完本文后就会有所体会 但,简单…

Java——设计模式(简单工厂模式)

* A:简单工厂模式概述* 简单工厂模式又叫静态工厂方法模式,它定义了一个具体的工厂类负责创建一些类的实例* B:优点* 客户端不需要再负责对象的创建,从而明确了各个类的职责* 简单来说,客户端你只需要用就可以了,就…

Java ObjectOutputStream writeFloat()方法与示例

ObjectOutputStream类writeFloat()方法 (ObjectOutputStream Class writeFloat() method) writeFloat() method is available in java.io package. 在java.io包中提供了writeFloat()方法 。 writeFloat() method is used to write the given 4 bytes of a float value. writeFl…

python安全攻防---信息收集---whois查询

whois是用来查询域名的IP以及所有者信息的传输协议。简单地说,whois就是一个数据库,用来查询域名是否以及被注册,以及注册域名的详细信息(如域名所有人、域名注册商等)。 使用whois查询,首先通过pip安装py…

百度面试题:从输入url到显示网页,后台发生了什么?

参考http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html 原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会…

VS2005无法启动修复办法

c:\Program Files\Microsoft Visual Studio 8\Common7\IDE>devenv /ResetSkipPkgs 转载于:https://www.cnblogs.com/doc/archive/2008/10/10/1307887.html

Java——设计模式(工厂方法模式)

* A:工厂方法模式概述* 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。* 简单来说:先定义一个工厂,工厂里面有些方法,这些方法就是用来创建动物的,然后有很多子工…

python安全攻防---爬虫基础---get和post提交数据

get提交数据1 get提交的数据就附在提交给服务器的url之后,以?开头参数之间以&隔开,例如/admin/user/123456.aspx?name123&id123 案例:写个脚本,在sogou自动搜索周杰伦,并将搜索页面的数据获取 程…

JavaMail中解决中文附件名乱码的问题

网上有很多类似的解决方案,很多是使用 if ((fileName ! null) && (fileName.toLowerCase().indexOf("gb2312") ! -1)){ fileName MimeUtility.decodeText(fileName); } 来解决,但对应gbk编码的附件名,这里仍不能正确处…

Java ObjectOutputStream writeBytes()方法与示例

ObjectOutputStream类writeBytes()方法 (ObjectOutputStream Class writeBytes() method) writeBytes() method is available in java.io package. writeBytes()方法在java.io包中可用。 writeBytes() method is used to write the given string as a sequence of bytes. write…

如何集中注意力(3)

如何集中注意力(3) [ 2008-10-20 10:15 ]by Glen Stansberry of LifeDev (feed). 集中注意力并不是一件很容易的事情,尤其是处在当前这个充满诱惑和纷扰的世界里。下面是继续告诉大家一些有帮助的方法: 7. Plan your day to the T…

Java——网络编程三要素

* A:计算机网络* 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。* 其实我们这些网,之所以能…

python安全攻防---爬虫基础--re解析数据

0x01 re基础 使用re模块,必须先导入re模块 import refindall():匹配所有符合正则的内容,返回的是一个列表 import restr "我的电话:10086,女朋友电话:11011" list re.findall(\d,str) print…

BSP for good 3d engine

1.open sourcehttp://irrlicht.sourceforge.net/downloads/ 2.不错的小材质http://www.permadi.com/tutorial/webgraph/index.html 3.java bsp display(demo):http://www.symbolcraft.com/graphics/bsp/index.php http://www.faqs.org/faqs/graphics/bsptree-faq/ 4.a bps ill…

Java InputStreamReader getEncoding()方法及示例

InputStreamReader类的getEncoding()方法 (InputStreamReader Class getEncoding() method) getEncoding() method is available in java.io package. getEncoding()方法在java.io包中可用。 getEncoding() method is used to get the encoding name avail for this InputStrea…

python安全攻防---爬虫基础---BeautifulSoup解析

0x01 基础 使用bs4首先要安装,安装后导入 import bs4bs对象有两个方法,一个是find,另一个是find_all find(标签名,属性值):只返回一个,返回也是bs对象,可以继续用find…

DataRabbit 3.1发布,完全支持SqlServer2005/2008

增加了对SqlServer2005/2008的新的数据类型的支持,如uniqueidentifier、time、sql_variant等。另外,EntityCreator也一起更新--不再强迫为Entity生成ToString()方法,使用者可以主动选择是否要生成。 DataRabbit 3.1 下…

Java——Socket通信原理

* Socket通信原理图解* A:Socket(中文翻译为:电源插座)套接字概述* 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识套接字* 通信的两端都有Socket(两端都是电源插座,中间是啥?不就是电线啦,电…