听按键或按下按钮

时间:2014-09-20 21:17:13

标签: java swing actionlistener

我正在构建一个计算器应用程序,以便用Swing构建GUI。我希望能够点击计算器按钮,还可以在键盘上输入它们。

我一直在关注KeyStroke,但我不完全确定如何在我当前的JButton ActionListener中实现它。

以下是按下按钮的示例:

public void actionPerformed(ActionEvent e) {
    if(e.getSource()==btn1){
        if(calcOperatorActive){display.setText("1");calcOperatorActive=false;}
        else if(calcOperator=="equals"){display.setText("1");calcTempMem=0;calcOperator="none";}
        else{display.setText(display.getText()+"1");}
    }

我希望能够在if语句中添加一个键侦听器,类似于:

if((e.getSource()==btn1)|(KeyStroke.getKeyStroke("1")){
    //the code
}

但是我得到一个错误,说无法比较boolean和KeyStroke。

1 个答案:

答案 0 :(得分:2)

这不是有效的Java:

if((e.getSource()==btn1)|(KeyStroke.getKeyStroke("1")){
    //the code
}

从布尔表达式的第一部分开始,这里是

(e.getSource()==btn1)

一个布尔表达式,非常好,但不是第二部分:

(KeyStroke.getKeyStroke("1")

对于使用复合布尔测试的if表达式,布尔测试必须是实际的布尔表达式。因此,在您的有效Java的情况下,您需要

if (booleanExpression1 || booleanExpression2) {
  //...
}

或两个语句都必须是评估为true或false的布尔表达式,再次是你的第二个语句(KeyStroke.getKeyStroke("1")


好的,但这只是您的代码/问题的第一个问题。另一个问题是没有可以用于击键部分的布尔表达式,因为这不是Java处理KeyStrokes的方式。相反,你会想要使用Key Bindings(而不是KeyListener)。

例如,请查看camickr对类似问题here的回答。