今天早上的两点收获:
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. Python中的import,from...import以及模块、包、库的概念

    首先,说明一下,我使用的是python3.6.3win32版本,使用的IDE是pycharm2017社区免费版. 刚开始接触python编程不久,有很多概念都不是特别清楚,但是我觉得既然选择,尽自己最 ...

  2. jQUery 样式操作

    一.css样式操作的方法: 1..css("样式"):获得样式值,比如$("input").css("color")  获得input中字体 ...

  3. OLED取模笔记

  4. LeetCode OJ:Pascal's TriangleII(帕斯卡三角II)

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  5. UI- UIView控件知识点回顾

    //  通过一个frame来初始化一个UI控件 - (id)initWithFrame:(CGRect)frame; // YES:能够跟用户进行交互 @property(nonatomic,gett ...

  6. 【python】使用asyncore进行异步通信

    参考博文:http://blog.csdn.net/livefun/article/details/8721772 参考博文:https://www.cnblogs.com/tomato0906/ar ...

  7. 兼容 数组 api map代码

    if(!("map" in Array.prototype)) Array.prototype.map=function(fun){ for(var i=0,arr=[]; i&l ...

  8. Keras GRU 文字识别

    GRU(Gated Recurrent Unit)是LSTM的一个变体,也能克服RNN无法很好处理远距离依赖的问题. GRU的结构跟LSTM类似,不过增加了让三个门层也接收细胞状态的输入,是常用的LS ...

  9. uboot Makefile 文件源码分析

    Makefile 是一个神奇的文件 详情参考uboot配置和编译过程详解

  10. Python之struct

    struct是Python中的内建模块,用来在C语言中的结构体与Python中的字符串之间进行转换,数据一般来自文件或网络 1. 功能 (1) 按照指定格式将Python数据转换为字符串(该字符串为字 ...