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();

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料