我正在构建一个计算器应用程序,以便用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。
答案 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的回答。