如何指示我的程序等待JavaFX中的用户输入?

时间:2018-12-27 21:44:20

标签: java javafx

我正在尝试使用JavaFX对计算器进行编码,该计算器的工作方式类似于iOS上存在的计算器。但是,我找不到一种方法来将屏幕上的文本设置为0值,以便用户在按下加号运算符时可以自由键入另一个值,而无需程序跳至下一行并使用“ 0”作为要添加的值。等待用户输入值然后将其加起来的最佳方法是什么?

public void onPlusClick() {
    if (!isPlusToggled) {
        isPlusToggled = true;
        plusButton.setStyle("-fx-background-color: #85878c; -fx-border-color: #75767a;");
        input = Double.parseDouble(display.getText());
        display.setText("0");
        if (isFirstPlus) {
            result += input;
            isFirstPlus = false;
        }
    } else if (display.getText().equals("0")) {
        isPlusToggled = false;
        plusButton.setStyle("-fx-background-color: #2c2d2d; -fx-border-color: #2c2d2d");
    } else {
        display.setText("0");
        //this is where the program should wait for the user input.
        input = Double.parseDouble(display.getText());
        result += input;
        display.setText(String.valueOf(result));
    }
}

1 个答案:

答案 0 :(得分:0)

尝试了几种不同的解决方案后,我通过添加else if语句来发现问题所在,该语句检查屏幕上的值是否与结果的值相同。在这种情况下,屏幕上的值将被设置为0,以便用户可以进一步输入要进行计算的数字。谢谢大家的帮助!

    public void onPlusClick() {
    if (!isPlusToggled) {
        isPlusToggled = true;
        plusButton.setStyle("-fx-background-color: #85878c; -fx-border-color: #75767a;");
        input = Double.parseDouble(display.getText());
        display.setText("0");
        if (isFirstPlus) {
            result += input;
            isFirstPlus = false;
        }
    } else if (display.getText().equals("0")) {
        isPlusToggled = false;
        plusButton.setStyle("-fx-background-color: #2c2d2d; -fx-border-color: #2c2d2d");
      //this is the new else if statement.
    } else if (display.getText().equals(String.valueOf(result))) {
        display.setText("0");
    } else {
        input = Double.parseDouble(display.getText());
        result += input;
        display.setText(String.valueOf(result));
    }
}