yujix2014 2016-06-04 07:03 采纳率: 16.7%
浏览 1090

java onHotKey 问题 求大神解救

做个功能需要能随时换热键 比如截图热键等
但是我每设置一次热键 在用的时候就会多调用onHotKey 这个方法一次
比如我设置五次 就会调用五次

上代码:
/**
* destroy(解除注册系统热键)
*
* @Title: destroy
* @Description: TODO
* @param 设定文件
* @return void 返回类型
* @throws
/
public void destroy()
{
// JIntellitype.getInstance().cleanUp();
JIntellitype.getInstance().unregisterHotKey(KEY_1);
JIntellitype.getInstance().unregisterHotKey(KEY_3);
}
/
*
* initHotKeyEvent(初始化注册热键)
*
* @Title: initHotKeyEvent
* @Description: TODO
* @param 设定文件
* @return void 返回类型
* @throws
*/
public void initHotKeyEvent()
{
Map hotKeyMap = null;
String p = null;
String s = null;

    try
    {
        hotKeyMap = dataGatherService.getHotKeyAndNetWork();
        if (null != hotKeyMap && !hotKeyMap.isEmpty() && hotKeyMap.size() > 0)
        {
            // 捕包快捷键
            p = hotKeyMap.get("packetHotkey").toString();
            p = p.substring(p.indexOf("+") + 1, p.length()).trim();

            // 截图快捷键
            s = hotKeyMap.get("screenHotkey").toString();
            s = s.substring(s.indexOf("+") + 1, s.length()).trim();
        }
    }
    catch (Exception e)
    {
        LOGGER.debug("获取捕包、截图快捷键异常,异常信息为:{}" , e.getMessage());
        new BusinessAnalysisException(e);
    }
    if (StringUtils.isBlank(p))
    {
        // 设置捕包默认快捷键
        JIntellitype.getInstance().registerHotKey(KEY_3, JIntellitype.MOD_CONTROL, (int)'Q');
    }
    else
    {
        // 设置捕包快捷键
        JIntellitype.getInstance().registerHotKey(KEY_3, JIntellitype.MOD_CONTROL, (int)p.toCharArray()[0]);
    }

    if (StringUtils.isBlank(s))
    {
        // 设置截图默认快捷键
        JIntellitype.getInstance().registerHotKey(KEY_1, JIntellitype.MOD_CONTROL, (int)'W');
    }
    else
    {
        JIntellitype.getInstance().registerHotKey(KEY_1, JIntellitype.MOD_CONTROL, (int)s.toCharArray()[0]);
    }

    // F3退出
    JIntellitype.getInstance().registerHotKey(KEY_2, 0, 114);
    JIntellitype.getInstance().addHotKeyListener(this);
}

就这两个方法 别处调用 先解除热键 在注册新热键 为啥会出现这个问题 求大神帮忙看看

  • 写回答

2条回答

  • yujix2014 2016-06-04 07:06
    关注

    设置热键的时候调用下面方法
    HotKey hotKey = new HotKey();
    // 先解除热键
    hotKey.destroy();
    // 在次绑定热键
    hotKey.initHotKeyEvent();

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题