今天早上的两点收获:
1、addActionListener(其中的setActionCommand函数就是要对对象进行唯一性的标记,便于消息传来后进行处理。理论上actionlistener可以全部代替其他监听,我是这么认为的,因为其标记的唯一性,但是这样的话会让某些很简单的监听变得复杂,所以一般只对要唯一性判断的监听才用)
2、消息监听只是对特定的对象进行特定方式的监听,监听的结果是一大堆的事件,所以要判断某个按钮是否被点击还是得要对传来的消息进行具体按钮的判断
 
另外,绘图是要记得手动进行repaint函数的调用。
Demo代码:
/*
* 实现java事件监听机制
*/
package com.listener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*; public class Demo9_5 extends JFrame
{
//定义组件
JButton jb1,jb2;
MyPanel jp1;
public static void main(String[] args)
{
Demo9_5 demo9_5 = new Demo9_5(); }
public Demo9_5()
{
//创建组件
jb1 = new JButton("黑色");
jb2 = new JButton("红色");
//添加组件
jp1 = new MyPanel(); jb1.setActionCommand("black");
jb2.setActionCommand("red"); this.setLayout(new GridLayout(3,1)); //设置布局样式
this.add(jb1);
this.add(jp1);
this.add(jb2); //注册监听!
jb1.addActionListener(jp1);
jb2.addActionListener(jp1); //显示窗体
this.setSize(400,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} class MyPanel extends JPanel implements ActionListener
{
//画出背景颜色
int c = 0;
public void paint(Graphics g)
{
super.paint(g);
//获取当前mypanel的宽和高
int w,h;
w = this.getWidth();
h = this.getHeight();
if(c == 0)
{
g.fillRect(0, 0, w, h);
}
else if(c == 1)
{
g.setColor(Color.red);
g.fillRect(0, 0, w, h);
}
} @Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(e.getActionCommand() == "black")
{
c = 0;
repaint();
System.out.println("BLACK");
}
if(e.getActionCommand() == "red")
{
c = 1;
repaint();
System.out.println("RED");
}
} }

红黑色背景切换。

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

  1. java事件监听机制

    1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...

  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. Oracle RAC(Real Application Clusters)

    Oracle RAC 运行于集群之上,为 Oracle 数据库提供了最高级别的可用性.可伸缩性和低成本计算能力.如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行.Oracle ...

  2. 登录页面jsp跳转到另一个jsp 与jsp-Servlet-jsp

    登录页面jsp 到另一个jsp,与jsp-Servlet-jsp  都是可以从表单提交参数信息. 但是jsp-jsp ,只能通过<%=request.getParameter("use ...

  3. AS3中以post和get方式提交数据

    这里主要介绍在as3中用URLRequest对像来post或get数据到服务器. post用于大数据量的提交,get用于小数据量的提交. as3中提交数据: POST方式: 1.新建一个test.fl ...

  4. 序(转) · 为 React 而写 -- 废话比较多, 你也可以说丰满

    流形 2 年前 (废话比较多       从今年开始,就一直在规划技术沉淀这事. 在阿里巴巴工作的这些年,前端团队日益壮大,同时聚集了一帮志趣相投的伙伴. 作为团队负责人,一方面是借团队在技术道路上的 ...

  5. HTTPS 性能优化 -- 基于协议和配置的优化

    基于协议和配置的优化 1 前言 上文讲到 HTTPS 对用户访问速度的影响. 本文就为大家介绍 HTTPS 在访问速度,计算性能,安全等方面基于协议和配置的优化. 2 HTTPS 访问速度优化 2.1 ...

  6. 《锋利的jQuery》读书笔记(动画)

    1.show()和hide() 实质就是改变当前DOM对象的display为block.none或inline-block(取决于之前的display),如下: $("element&quo ...

  7. 深入解析Glide源码

    Glide 是 Google的开源项目, Glide具有获取.解码和展示视频剧照.图片.动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里.创建Glide的主 ...

  8. [置顶] 【机器学习PAI实践六】金融贷款发放预测

    一.背景 很多农民因为缺乏资金,在每年耕种前会向相关机构申请贷款来购买种地需要的物资,等丰收之后偿还.农业贷款发放问题是一个典型的数据挖掘问题.贷款发放人通过往年的数据,包括贷款人的年收入.种植的作物 ...

  9. Android 进阶14:源码解读 Android 消息机制( Message MessageQueue Handler Looper)

    不要心急,一点一点的进步才是最靠谱的. 读完本文你将了解: 前言 Message 如何获取一个消息 Messageobtain 消息的回收利用 MessageQueue MessageQueue 的属 ...

  10. vim 插件使用

    a.vim的安装相当简单,下载a.vim后丢进Vim插件目录(一般为~/.vim/plugin),必要时再重启一下Vim就可以使用了. 头/源文件切换命令 :A 头文件/源文件切换 :AS 分割窗后并 ...