简介

java核心编程个出的代码只要通过

EventTrace tracer = new EventTracer();

tracer.add(frame)

就可以跟踪事件了

code

/*
* @Author: your name
* @Date: 2020-11-08 16:41:50
* @LastEditTime: 2020-11-08 17:05:36
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /java/calcu/EventTracer.java
*/
package calcu; import java.awt.*;
import java.beans.*;
import java.lang.reflect.*; public class EventTracer {
private InvocationHandler handler; public EventTracer() {
// the handler for all event proxies
handler = new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) {
System.out.println(method + ": " + args[0]);
return null;
}
};
} public void add(Component c) {
try {
// get all events to which this component can listen
BeanInfo info = Introspector.getBeanInfo(c.getClass()); EventSetDescriptor[] eventSets = info.getEventSetDescriptors();
for (EventSetDescriptor eventSet : eventSets) {
addListener(c, eventSet);
}
} catch (IntrospectionException e) { } if (c instanceof Container) {
// get all children and call add recursively
for (Component comp : ((Container) c).getComponents())
add(comp);
}
} public void addListener(Component c, EventSetDescriptor eventSet) {
// make proxy object for this listener type and route all calls to the handler
Object proxy = Proxy.newProxyInstance(null, new Class[] { eventSet.getListenerType() }, handler); // add the proxy as a listener to the component
Method addListenerMethod = eventSet.getAddListenerMethod();
try {
addListenerMethod.invoke(c, proxy);
} catch (ReflectiveOperationException e) { }
}
}

java 利用反射调试GUI的更多相关文章

  1. java利用反射调用类的某个方法

    java利用反射机制 可以动态调用某个类的某个方法,在 扩展系统功能或提供对外接口时经常用的到. 代码如下: 打印类Print.java package com.test.reflct; /** * ...

  2. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  3. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  4. java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值

    1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...

  5. Java利用反射取得类的所有信息

    Java中可以利用反射获取类的名称.构造函数.属性.方法.也就是说可以通过反射可以取得类的所有信息(不管该成员是否封装为private). 如有下面的Dept类定义: package org.lyk. ...

  6. java利用反射访问类的私有(private)属性及方法

    Java语言中,在一个类中,为了不让外界访问到有的属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?答案是有的 ...

  7. Java利用反射排序

    前言 Java为我们提供了几种排序得方法,比如Arrays和Collections类,但是前提是数组或者集合中的元素都必须实现Comparable接口,基本的数据类型都已经实现了Comparable接 ...

  8. Java——利用反射机制将表单数据自动填充到JavaBean中

    以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...

  9. java利用反射交换两个对象中的字段相同的字段值

    有时候我们的两个对象字段都是一样的,只有极少的区别,想要把一个对象字段的值,赋值给另外一个对象值 然后传给另外一个方法使用,但是这个字段太多,一个一个的复制太过繁琐. 这时候利用反射解决这个问题. c ...

  10. java利用反射绕过私有检查机制实行对private、protected成员变量或方法的访问

    在java中,如果类里面的变量是声明了private的,那么只能在被类中访问,外界不能调用,如果是protected类型的,只能在子类或本包中调用,俗话说没有不透风的墙.但是可以利用java中的反射从 ...

随机推荐

  1. mysql免密登录

    开启mysql免密登录, vi /etc/my.cnf [mysqld]下添加 skip-grant-tables , 保存后重启mysql服务:service mysqld restart

  2. 36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了!

    36.7K star!拖拽构建AI流程,这个开源LLM应用框架绝了! 只需拖拽节点,5分钟搭建专属AI工作流! Flowise 是一款革命性的低代码LLM应用构建工具,开发者通过可视化拖拽界面,就能快 ...

  3. SQL 强化练习 (十)

    这一周都被客户搞得很惨.... 项目主流程不推进, 尽搞一些无关紧要的事情, 什么界面 ui 美化, 增加什么按钮进度条, 模糊查询...各种乱七八糟的需求, 挡都挡不住呀... 真的是把我当全栈使了 ...

  4. Flutter视频压缩技术:如何在应用中优化视频文件的质量和大小?

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  5. 逆序对计数问题之C#实现(O(nlogn))

    逆序对计数问题是一个经典的算法问题,常见于计算机科学和数据结构领域.它的目标是计算数组中所有的逆序对的数量.逆序对是指数组中两个元素满足位置关系(i,j),且有 A[i]>A[j]. 它的应用有 ...

  6. Django 数据迁移报错之“TypeError: __init__() missing 1 required positional argument: 'on_delete'”

    当执行 python manage.py makemigrations 出现错误:TypeError: init() missing 1 required positional argument: ' ...

  7. 若依ruoyi项目学习(一)项目跑起来!

    开个坑,记录自己学习若依的心得,感兴趣的小伙伴可以关注一波. 因为自己也比较菜,可能能为大家提供一个较低的视角去分析,希望大家能一起学习. 当然,即时视角很低,也不适合0基础的朋友~ 项目地址: 前置 ...

  8. CF contest 1935 Round 932 (Div. 2) A-D题解

    Codeforces Round 932 (Div. 2) A-D题解 Codeforces Round 932 (Div. 2) 绪言 很菜,AB速度慢,卡在C,想DP,但是时间优化不下来,说服自己 ...

  9. 浅谈RMI、JRMP、JNDI

    目录 RMI 概念: 为什么要有RMI? RMI的构成: 如何使用RMI 注意!!! JRMP(是RMI的通信协议的名字) 概念 查看通信过程 工具使用 攻击Server 攻击Client JNDI ...

  10. Socket实战与应用

    1: Socket之序列化; 让对象能够通过socket进行传输 服务端: 1 package com.lv.study.am.first; 2 3 import java.io.ObjectOutp ...