1.简单的事件监听

package demo2;

/*
* java事件监听机制
*/
import java.awt.*;
import javax.swing.*;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.nio.ByteOrder; public class Demo1 extends JFrame implements ActionListener {
JPanel m;
JButton jb1, jb2; public static void main(String[] args) {
Demo1 demo = new Demo1();
} public Demo1() {
m = new JPanel();
jb1 = new JButton("黑色");
jb2 = new JButton("红色");
this.add(jb1, BorderLayout.NORTH);
m.setBackground(Color.BLACK);
this.add(m);
this.add(jb2, BorderLayout.SOUTH);
// 注册监听
jb1.addActionListener(this);
jb2.addActionListener(this);
// 指定action命令
jb1.setActionCommand("aa");
jb2.setActionCommand("bb"); this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } @Override
public void actionPerformed(ActionEvent e) {
// 判断哪个按钮被点击
if (e.getActionCommand().equals("aa")) {
System.out.println("点击黑色");
m.setBackground(Color.BLACK);
} else if (e.getActionCommand().equals("bb")) {
System.out.println("点击红色");
m.setBackground(Color.red);
} else {
System.out.println("点击错误");
}
}
}

2.设置普通类Cat进行监听

package demo2;

/*
* java事件监听机制
*/
import java.awt.*;
import javax.swing.*;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.nio.ByteOrder; public class Demo1 extends JFrame implements ActionListener {
JPanel m;
JButton jb1, jb2;
Cat cat; public static void main(String[] args) {
Demo1 demo = new Demo1();
} public Demo1() {
cat = new Cat();
m = new JPanel();
jb1 = new JButton("黑色");
jb2 = new JButton("红色");
this.add(jb1, BorderLayout.NORTH);
m.setBackground(Color.BLACK);
this.add(m);
this.add(jb2, BorderLayout.SOUTH);
// 注册监听
jb1.addActionListener(cat);
jb2.addActionListener(cat);
// 指定action命令
jb1.setActionCommand("aa");
jb2.setActionCommand("bb"); this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); } @Override
public void actionPerformed(ActionEvent e) {
// 判断哪个按钮被点击
if (e.getActionCommand().equals("aa")) {
System.out.println("点击黑色");
m.setBackground(Color.BLACK);
} else if (e.getActionCommand().equals("bb")) {
System.out.println("点击红色");
m.setBackground(Color.red);
} else {
System.out.println("点击错误");
}
} // 设计cat内部类
class Cat implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("aa")) {
System.out.println("点击黑色");
m.setBackground(Color.BLACK);
} else if (e.getActionCommand().equals("bb")) {
System.out.println("点击红色");
m.setBackground(Color.red);
} else {
System.out.println("点击错误");
}
} }
}

3.上下左右移动

package demo3;

//横着x 竖着y
import java.awt.*;
import javax.swing.*;
import java.awt.event.*; public class Demo3 extends JFrame {
Myframe mp; public static void main(String[] args) {
Demo3 demo = new Demo3();
} public Demo3() {
mp = new Myframe();
this.add(mp);
this.addKeyListener(mp);
this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
} // Myframe定义的面板用于绘图
class Myframe extends JPanel implements KeyListener {
int x = 10, y = 10; public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 10, 10);
} @Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y += 2;
System.out.println("向下移动");
this.repaint();
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
y -= 2;
System.out.println("向上移动");
this.repaint();
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x -= 2;
System.out.println("向左移动");
this.repaint();
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x += 2;
System.out.println("向右移动");
this.repaint();
}
} @Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub } @Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub } }

java事件监听机制的更多相关文章

  1. java事件监听机制2

    今天早上的两点收获: 1.addActionListener(其中的setActionCommand函数就是要对对象进行唯一性的标记,便于消息传来后进行处理.理论上actionlistener可以全部 ...

  2. JAVA事件监听机制的实现

    今天学习了java的事件编程机制,略有体会,先在此记下心得. 第一,首先明确几个概念. 事件源:一个产生或者触发事件的对象.事件:承载事件源状态改变时的信息对象.事件监听器接口:实际上就是一个类,该类 ...

  3. Java事件监听机制与观察者设计模式

    一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...

  4. JAVA事件监听机制学习

    //事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...

  5. JAVA事件监听机制与实现

    事件监听机制的实现:参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回调函数) 事件有许 ...

  6. java 事件监听机制组成

    事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...

  7. java事件监听机制(自定义事件)

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...

  8. 【转】java事件监听机制

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...

  9. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

随机推荐

  1. 0. VIM 系列 - 源码升级最新版本vim

    卸载原来的vim: $ sudo apt-get remove --purge vim $ suso apt-get clean 下载最新版本源码: $ git clone https://githu ...

  2. ASP.NET Core Web API 集成测试

    本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识. 这里有xUnit的介绍: https://www.cnblogs.com/cgzl/p/9178672.html#t ...

  3. Redis缓存你必须了解的!

    不管你是从事Python.Java.Go.PHP.Ruby等等… Redis都应该是一个比较熟悉的中间件.而大部分经常写业务代码的程序员,实际工作中或许只用到了set value.get value两 ...

  4. Flink中的Time

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

  5. SLAM+语音机器人DIY系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  6. Lumen框架-错误&日志

    介绍 当你开始一个新的Lumen项目的时候,错误和异常功能,已经在框架中注入了.此外,Lumen还集成了Monolog日志函数,支持和提供多种强大的日志处理功能. 配置 错误详情 大量的错误信息在你的 ...

  7. Elasticsearch简介与实战

    什么是Elasticsearch?   Elasticsearch是一个开源的分布式.RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene.   Lucene 可以说是 ...

  8. 智能指针std::unique_ptr

    std::unique_ptr 1.特性 1) 任意时刻只能由一个unique_ptr指向某个对象,指针销毁时,指向的对象也会被删除(通过内置删除器,通过调用析构函数实现删除对象) 2)禁止拷贝和赋值 ...

  9. DVWA 黑客攻防演练(十一) 存储型 XSS 攻击 Stored Cross Site Scripting

    上一篇文章会介绍了反射型 XSS 攻击.本文主要是通过 dvwa 介绍存储型 XSS 攻击.存储型 XSS 攻击影响范围极大.比如是微博.贴吧之类的,若有注入漏洞,再假如攻击者能用上一篇文章类似的代码 ...

  10. java笔记---- 获取外网(公网)的ip地址

    import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import ...