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. appium-desktop定位元素原理

    初衷 最近在编写Android App自动化用例,其中元素定位相对来说耗费的时间比较长.我们都知道Appium-desktop拥有自己的录制功能,我们就在想是不是可以把录制功能跟我司的自动化框架(AT ...

  2. 3.Git基础-查看当前文件状态、跟踪新文件、暂存文件、忽略文件、提交更新、移除文件、移动文件

    1.检查当前文件状态 --  git status  git diff  git diff --staged   git status :我们可以使用 git status 来查看文件所处的状态.当运 ...

  3. 我眼中的 Nginx(一):Nginx 和位运算

    作者张超:又拍云系统开发高级工程师,负责又拍云 CDN 平台相关组件的更新及维护.Github ID: tokers,活跃于 OpenResty 社区和 Nginx 邮件列表等开源社区,专注于服务端技 ...

  4. JavaScript夯实基础系列(五):类

      JavaScript中没有类,是通过使用构造函数和原型模式的组合来实现类似其它面向对象编程语言中"类"的功能.ES6引入的关键字class,形式上向其它面向对象编程语言靠拢,其 ...

  5. 基于Log4Net本地日志服务简单实现

    背景 项目开发中,我们或多或少会使用诸如NLog,Log4Net,Kafka+ELK等等日志套件: 基于关注点分离原则,业务开发的时候不应该关注日志具体实现:并且后续能方便切换其他日志套件: 这里先实 ...

  6. WebApiClient与Asp.net core DI的结合

    1 WebApiClient 一款基于HttpClient封装,只需要定义c#接口并修饰相关特性,即可异步调用远程http接口的客户端库 WebApiClient WebApiClient.Exten ...

  7. JVM上的响应式流 — Reactor简介

    强烈建议先阅读下JVM平台上的响应式流(Reactive Streams)规范,如果没读过的话. 官方文档:https://projectreactor.io/. 响应式编程 作为响应式编程方向上的第 ...

  8. 04-创建kubeconfig认证文件

    本文档记录自己的学习历程! 创建 kubeconfig 文件 kubelet.kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证 ...

  9. django-restframework之缓存系统

    django-restframework之缓存系统 一 前言 一 为什么需要缓存 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增.删.查.改,渲染模块,执行业务逻辑,最后生成用户看到的 ...

  10. git push提交报错,提示文件过大,且去掉大文件也报同样的错误

    错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...