帆软报表重要Activator之DesignerStartup中的GlobalListenerProvider扩展开发

楼主
插件开发者

上一篇我们说了DesignerStartup的启动过程中有一个GlobalListenerProvider扩展,这个扩展是一个监听键盘事件的监听扩展。先看效果:

        

         当监听到键盘事件时,弹出提示。

1 先看插件项目结构:

        

         需要实现两个类,一个是provider,一个是listener

2 plugin.xml中的配置:

        

         这个扩展是配置到extra-designer节点下,扩展xml标签名字为:GlobalListenerProvider

 

3 查看源码

 3.1 MyGlobalListenerProvider1源码

        

package com.fr.plugin.helloworld.globallistenerprovider;

import com.fr.design.fun.impl.AbstractGlobalListenerProvider;

import java.awt.*;
import java.awt.event.AWTEventListener;
/*
* 这个扩展是通过Toolkit.getDefaultToolkit().addAWTEventListener方法将AWTEventListener事件加入的,这个是键盘事件.
*
* */
public class MyGlobalListenerProvider1 extends AbstractGlobalListenerProvider {
    @Override
    public AWTEventListener listener() {
       // Toolkit.getDefaultToolkit().addAWTEventListener();
        return new MyAWTEventListener1();
    }
}

这个类继承了抽象类AbstractGlobalListenerProvider,AbstractGlobalListenerProvider类实现了接口GlobalListenerProvider接口,帆软报表中对于扩展插件的开发,一般内部都会实现一个抽象类,我们只需要继承这个抽象类即可,而不必去实现扩展接口。

这个类要求我们返回一个AWTEventListener类型的实例对象。这里返回我们自己实现的MyAWTEventListener1实例。

3.2 MyAWTEventListener1源码

        

package com.fr.plugin.helloworld.globallistenerprovider;

import com.fr.log.FineLoggerFactory;
import com.fr.log.FineLoggerProvider;

import javax.swing.*;
import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;

//键盘事件
public class MyAWTEventListener1 implements AWTEventListener {
    private static final FineLoggerProvider LOGGER = FineLoggerFactory.getLogger();
    @Override
    public void eventDispatched(AWTEvent event) {
        if(event instanceof KeyEvent){
            KeyEvent ke = (KeyEvent)event;
            LOGGER.info("发生AWT事件了:"+ke.getSource());
            LOGGER.info("发生AWT事件了:"+ke.getKeyCode());
            LOGGER.info("发生AWT事件了:"+ke.getKeyChar());
            LOGGER.info("发生AWT事件了:"+ke.getID());
            LOGGER.info("发生AWT事件了:"+ke.paramString());
            JOptionPane.showMessageDialog(null, "你按了键盘的:"+ke.getKeyChar());
        }
        LOGGER.debug("发生AWT事件了:"+event.toString());
    }
}

        MyAWTEventListener1类我们实现了AWTEventListener接口,并且判断event是否是KeyEvent的实例,并且弹出一个提示框。

更多内容:https://blog.csdn.net/sixingbugai?spm=1000.2115.3001.5343

分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 3370浏览人数
最后回复于:2021-9-7 10:27

返回顶部 返回列表