java - 使用 KeyListener JAVA 的计算器

标签 java swing keylistener

我是编程初学者所以请耐心等待,我正在尝试使用 KeyListener 制作一个计算器,这就是我得到的(剪切代码)

    public void keyPressed(KeyEvent e){
    int code = e.getKeyCode();
    System.out.println("   Code: " + KeyEvent.getKeyText(code));

    if(KeyEvent.VK_ADD == e.getKeyCode()){
        tmp = Double.parseDouble(txtDisplay.getText());
        txtDisplay.setText(display);
        add = true;

    }
    if(KeyEvent.VK_DIVIDE == e.getKeyCode()){
        tmp = Double.parseDouble(txtDisplay.getText());
        txtDisplay.setText(display);
        div = true;
    }
    if(KeyEvent.VK_SUBTRACT == e.getKeyCode()){
        tmp = Double.parseDouble(txtDisplay.getText());
        txtDisplay.setText(display);
        sub = true;
    }
    if(KeyEvent.VK_MULTIPLY == e.getKeyCode()){
        tmp = Double.parseDouble(txtDisplay.getText());
        txtDisplay.setText(display);
        mul = true;
    }
    if(e.getKeyCode()==KeyEvent.VK_BACK_SPACE){
        txtDisplay.setText("");
        tmp = 0;
        toSolve = 0;
    }
    if(e.getKeyCode() == KeyEvent.VK_ENTER){
        toSolve = Double.parseDouble(txtDisplay.getText());
        if( add == true ){
            toSolve = tmp + toSolve;}

        else if ( sub == true  ){

            toSolve = tmp - toSolve;}

        else if ( mul == true  ){

            toSolve = tmp * toSolve;}

        else if ( div == true  ){

            toSolve = tmp / toSolve;}

    txtDisplay.setText(Double.toString( toSolve ));

    add = false ;
    sub = false ;
    mul = false ;
    div = false ;

    }


}

我想让它执行操作,但当我运行它时,它似乎只是在做加法。我认为这可能符合我的编程逻辑。另外,我怎样才能删除文本字段中的操作符号,因为它还会转换符号,因此会引发异常。

最佳答案

尝试使用 keyReleased() 而不是 keyPressed():

public void keyReleased(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
        //Do something
}

Java 中的一些 Listener 有很多问题,如果您不质疑其背后的原因,有时它会为您省去很多麻烦^^

关于java - 使用 KeyListener JAVA 的计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218165/

相关文章:

Java Wicket 资源问题

java - 将 ArrayList 制作成 JTable

java - invokeLater 未按预期工作(JButton 从未释放)

java - KeyListener/KeyBinding 不一致触发

Java,我的图像不会更新/移动

java - 在不使文本变灰的情况下在 JTextField 中设置文本颜色

Java/HTML - 防止 outlook 在表格中包装文本

java - 在 Oracle 数据库中使用 JSP 和 Servlet 上传图像

java - JOptionPane 无限循环

java - 即使面板打印,KeyListener 也无法工作