【 java版坦克大战--事件处理】 让坦克动起来--事件处理的准备
要能够控制坦克运动,必须用到事件处理的知识.
事件处理的一个demo.
/**
* 事件处理机制:委派事件模型.指当事件发生的时候,产生事件的对象(事件源),会把此
* "消息"传递给"事件的监听者"的一种处理方式,而这里的"信息"指java.awt.event事件类库种
* 某个类创建的对象. 在java种,消息 是一种事件对象.
*
*
* 事件源-----事件(一个事件对象)----->事件监听者[事件处理方法]
*/
package com.test3;
import java.awt.*;
import javax.swing.*; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Demo9_3 extends JFrame implements ActionListener{
JPanel mp = null;
JButton jb1=null,jb2=null;
public static void main(String[] args) {
Demo9_3 demo9_3 = new Demo9_3();
}
public Demo9_3(){
mp = new JPanel();
jb1 = new JButton("黑色");
jb2 = new JButton("红色"); this.add(jb1,BorderLayout.NORTH);
mp.setBackground(Color.black);
this.add(mp);
this.add(jb2,BorderLayout.SOUTH);
Cat myCat1 = new Cat(); //注册监听 对象->实例.实例监听.
jb1.addActionListener(this);
jb1.addActionListener(myCat1);
//指定action命令.如果jb1被点击,黑色command被传递.
jb1.setActionCommand("黑色"); jb2.addActionListener(this);
jb2.setActionCommand("红色"); this.setSize(200,150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//事件处理方法
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("ok");
//判断是哪个按钮被点击
if(e.getActionCommand().equals("黑色")){
System.out.println("黑色被点击了");
mp.setBackground(Color.black);
}else if(e.getActionCommand().equals("红色")){
System.out.println("红色被点击了");
mp.setBackground(Color.red);
}
}
} class Cat implements ActionListener{ @Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("黑色")){
System.out.println("猫猫知道你按下黑色按钮了");
}else if(e.getActionCommand().equals("红色")){
System.out.println("猫猫知道你按下红色按钮了");
}
} }
运行后.点击按钮console显示如下.
其中有两个监听者,分别是this,mycat1二者都是通过implements ActionListener接口来获得监听功能的.
点击后背景颜色变化。
【 java版坦克大战--事件处理】 让坦克动起来--事件处理的准备的更多相关文章
- HTML坦克大战学习02---坦克动起来
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
上篇我们完成了地图的信息获取和碰撞检测,这篇我们整合到程序中. 在这之前我们改造一下Tank类,使它更加模块化,共容易理解: 1.改造后的Tank类声明如下: class Tank : public ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTan ...
- java版飞机大战 实战项目详细步骤.md
[toc] 分析 飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是自己控制的飞机).敌人.而敌人应该分为打死给分的飞机(就是 ...
- java版飞机大战代码
@ 目录 前言 Plane PlaneStatus类 Power类 Gift Diji play类 over类 MainFrame主类 MyZiDan DijiZiDan Before 前言 很久之前 ...
- Java坦克大战 (七) 之图片版
本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...
- HTML5-坦克大战一完成坦克上下左右移动的功能(一)
坦克大战一完成坦克上下左右移动的功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 【 java版坦克大战--事件处理】 坦克动起来了
折腾了这么久,坦克总算能动了.只贴代码编辑不给上首页,花了半个小时的时间写了n多注释. 再顺便把绘图的原理发在这里: 绘图原理 Component类提供了两个和绘图有关的重要方法: ① paint ...
- 【 java版坦克大战--绘图技术】 绘制坦克
通过上一节,我们学会的用java绘图.那现在就用java绘制自己坦克. 首先通过分析坦克由这几部分组成.如图 各个部件的长宽如图.15,10为圆心. /** * 坦克游戏的1.0版 * 1.画出坦克 ...
- 【java版坦克大战---准备篇】 java 绘图
要写坦克大战当然要先画出坦克.java画图是基础. package com.game; import java.awt.*; import javax.swing.*; public class Pr ...
随机推荐
- UIImageC处理
UIImageC处理 1.等比缩放 - (UIImage *) scaleImage:(UIImage *)image toScale:(float)scaleSize { UIGraphicsBeg ...
- Oracle Outline总结
一.基本概述 Oracle Outline,中文也称为存储大纲,是最早的基于提示来控制SQL运行计划的机制.也是9i以及之前版本号唯一能够用来稳定和控制SQL运行计划的工具. outline是一个hi ...
- 进程控制之更改用户ID和组ID
在UNIX系统中,特权(例如能改变当前日期的表示法以及访问控制(例如,能否读.写一特定文件))是基于用户ID和组ID的.当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己的用户I ...
- “:Choose a destination with a supported architecture in order to run on this device.”
我在编译从GitHub上clone下来的<TweeJump>时,出现如下错误:":Choose a destination with a supported architectu ...
- 认识CoreData-使用进阶
之前两篇文章都比较偏理论,文字表达比较多一些,但都是干货!学习时先理解理论知识,才能更好的帮助后面的理解. 在这篇文章中,将会涉及关于CoreData的一些复杂操作,这些操作会涉及分页查询.模糊查 ...
- android自定义View之钟表诞生记
很多筒子觉得自定义View是高手的象征,其实不然.大家觉得自定义View难很多情况下可能是因为自定义View涉及到了太多的类和API,把人搞得晕乎乎的,那么今天我们就从最简单的绘图API开始,带大家来 ...
- 谓词(NSPredicate)
OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词语句,就可以从数组中过滤 ...
- Learning Django Resources
Learning Django Django makes it easier to build better Web apps more quickly and with less code. Web ...
- ASP.NET Mvc开发之EF延迟加载
EF延迟加载:就是使用Lamabda表达式或者Linq 从 EF实体对象中查询数据时,EF并不是直接将数据查询出来,而是在用到具体数据的时候才会加载到内存. 一,实体对象的Where方法返回一个什么对 ...
- Java8特性---关于Null
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/5713941.html ...