【 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 ...
随机推荐
- vc关于文件拷贝
单个文件的拷贝 system 针对单个文件 CopyFile 针对单个文件 /** @file_extension egg: .txt .png **/ void CopyFileToDir(CS ...
- 删除mysql服务
当我们卸载完MySQL后重新装MySQL提示 The service already exists! 是因为服务名称还残留在系统里 打开cmd 输入下面 sc delete mysql 这个mysql ...
- 设置 Linux 文件和文件夹权限的方法
1.字符表示法 类型 操作 权限 u + r g - w o = x a 类型代表改动权限的对象,u表示文件的用户.g表示文件全部者的群组,o表示非用户组用户.a表示ugo 操作 + 表示添加权限,- ...
- Edit显示行号
Edit显示代码行号 关键点 使用这个类然后关联Edit的变量为 LineNumberEdit类型的 实现过程 //////////////////////////////////////////// ...
- 蘑菇街IM
https://github.com/mogutt TTServer 蘑菇街TeamTalk之消息服务器 Updated 2 days ago Shell 122 208 TTAutoDeploy ...
- Apache的prefork模式和worker模式(转)
prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...
- linux gnome 安装
首先先下载x-window的内核:apt-get -u install x-window-system-core:下载登录管理界面gdm或kdm:apt-get -u install gdm gdm- ...
- linux上gcc
查看gcc版本号 rpm -qa | grep gcc gnu的gcc是linux/unix下开发的,不能直接在window下运行.window下有gcc的移植版本.就是楼上说的MinGW和cygwi ...
- (原创)speex与wav格式音频文件的互相转换
我们的司信项目又有了新的需求,就是要做会议室.然而需求却很纠结,要继续按照原来发语音消息那样的形式来实现这个会议的功能,还要实现语音播放的计时,暂停,语音的拼接,还要绘制频谱图等等. 如果是wav,m ...
- Android(java)学习笔记146:Bundle和Intent类使用和交互
Bundle只是一个信息的载体 将内部的内容以键值对组织 ,Intent负责Activity之间的交互自己是带有一个Bundle的.Intent.putExtras(Bundle bu ...