当前位置: 首页 > 面试题库 >

获取组合键

左丘耀
2023-03-14
问题内容

如何获得Java 键盘EG(Ctrl+ somekeyAlt+ somekey)上的按键组合?

我使用KeyEvent监听器,MouseEvent键盘上所有按键的监听器。我可以使用该监听器捕获键盘上的所有按键事件。但是,我无法捕捉到(Ctrl+
Alt+ Del)....等组合键。


问题答案:
@Override
public void keyPressed(KeyEvent evt) {
         if (evt.getKeyCode()==KeyEvent.VK_CONTROL) { ctrl  = true; }
    else if (evt.getKeyCode()==KeyEvent.VK_SHIFT)   { shift = true; }
    else if (evt.getKeyCode()==KeyEvent.VK_ALT)     { alt   = true; }
    else {
        keyHit = KeyEvent.getKeyText( evt.getKeyCode() );
        System.out.println("Key Hit is "+keyHit);
    }

    processLocalKeyEvent(evt);
}

@Override
public void keyReleased(KeyEvent evt) {

    if (evt.isControlDown() && keyHit != "") ctrl  = true;
    if (evt.isAltDown()     && keyHit != "") alt   = true;
    if (evt.isShiftDown()   && keyHit != "") shift = true;

    if (ctrl)  sb.append("Ctrl");
    if (shift) sb.append("Shift");   
    if (alt)   sb.append("Alt"); 
    if (!ctrl && !shift && !alt) {
        sb.append(keyHit);
    } else {
        sb.append("_"+keyHit);
    }

    if (ctrl || shift || alt) {
        Thread thread = new Thread();
        try {
            thread.sleep(300);
            rfbProto.capture();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } else if ((ctrl || shift || alt) && keyHit=="") {
        rfbProto.capture();
    } else if ((!ctrl || !shift || !alt) && keyHit!="") {
        rfbProto.capture();
    }

    ctrl  = false;
    shift = false;
    alt   = false;
    keyHit = "";
    sb = new StringBuffer();
    processLocalKeyEvent(evt);
}


 类似资料:
  • 我的表单上有2个组合框(在表单加载事件中)。第一个组合框在表单加载后从选择语句中获取一个值。我想在我的第二个组合框中使用该值。这是我的代码: 1st组合框= cbDelivery 2de组合框= cbOrderNo 此组合框位于: private void CB delivery _ selectedindex changed(对象发送方,事件参数e) 因此,一旦我从1ste组合框中选择一个值,我

  • 问题内容: 我需要获取Swing中组合框的整数值。 我已经为combobox设置了一个整数值作为id。我尝试了combobox.getSelectedItem()和combobox.getSelectedIndex(),但是它无法获取int值。 下面是我的代码: 任何帮助表示赞赏。 问题答案: 方法返回一个按类型包装的值,因此您必须进行相应的转换。 句法:

  • 我使用Saxon CE和XSLT 2.0在页面上生成和操作控件。生成组合框不是问题,但当我更改组合框时,似乎无法从组合框的选项条目中获取值。下面是示例性XSLT代码: 我想做的是当用户更改组合框的值时,他们选择的选项的值存储在变量$myVal中。然后我使用该变量来影响主页上的转换。现在我拥有的根本不起作用(目前它获取所有选项的所有值,而不是用户选择的那个)。 思想?

  • 我有一个ComboBox,我想在视图模型中将选中的项目文本绑定到一个字符串。 现在我有了: Xaml: 视图模型: 当我运行该程序时,我收到异常: Binding表达式路径错误:在“对象”上找不到“类型”属性“观察集合'1'(HashCode=34166919)”。Binding表达式:路径=类型;数据项=“观察集合'1'(HashCode=34166919);目标元素是“组合框”(名称=");目

  • 问题内容: 假设我有3个列表:[‘q’,’w’],[‘a’,’s’],[‘z’,’x’]。如何从这些列表中获取可能的组合列表?所以我得到一个列表[[‘q’,’a’,’z’],[‘q’,’s’,’z’]]等。我为两个方法创建了一个方法,但对N个列表却找不到一个方法: 我发现这是由番石榴的Sets.cartesianProduct完成的。 问题答案: 您需要N个嵌套循环,这使它变得很难。 您可以使用递

  • 问题内容: 我有一个字符数组c [] [],每个索引都有不同的映射。例如: 我需要以字符串形式返回此数组的所有可能字符组合。也就是说,对于上述字符数组,我应该返回:“ ag”,“ ah”,“ ai”,“ bg”,“ bh”,“ bi”,“ cg”,“ ch”,“ ci”等对于上面只有两件事的字符数组,这样做很容易,但是如果有更多的数组,那么我不知道该怎么办…这就是我要大家提供的帮助!:) 问题答案