【问题标题】:I am unable to read the data from Textfield我无法从 Textfield 读取数据
【发布时间】:2021-07-25 17:39:05
【问题描述】:

我一直在尝试使用 JavaFX 制作一个简单的计算器,对此我很陌生。我有两个TextFields,其余按钮是+-*/ 等运算符。问题是,每当我执行计算并按下等号时,结果都是零。计算器未对任何运算符执行计算。请帮助我,因为我无法理解为什么会发生这种情况。下面是Controller文件的代码。

package application;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;

public class MainController {
    @FXML
    private Label result;

    @FXML 
    private TextField num1, num2 ;

    private String operator = "";
    private int number1, number2;
    //private boolean start = true;
    private Model model = new Model();
    
    @FXML
    public void processNumbers(ActionEvent event) {
        number1 = Integer.parseInt(num1.getText());
        number2 = Integer.parseInt(num2.getText());
    }
    
    @FXML
    public void processOperators(ActionEvent event) {
        String value = ((Button) event.getSource()).getText();
        if (!value.equals("?")) {
            if (!operator.isEmpty())
                return;
             
            operator = value;
        } else {
            if (operator.isEmpty())
                return;
            
            int output = model.calculate(number1, number2, operator);
            result.setText(String.valueOf(output));
            operator = "";
            //start = true;
        }
    }
}

【问题讨论】:

  • 如果我理解的很好,当你进行操作并按下=时,你输入processOperators(),你验证了第一个条件!value.equals("?")operator不为空,所以唯一的动作由您的计算器执行的将是return;。我认为这就是为什么它没有使result.setText(...)
  • 谢谢。所以问题在于 if else 条件。我会检查并更新。

标签: java textfield javafx-11


【解决方案1】:

我复制并运行了您的代码。有用。问题是流程不直观(在我看来)。

首先您需要在TextFields 中输入值,即num1num2。输入值后,键盘焦点位于其中一个 TextFields 上,您需要按 ,因为按 会调用方法 processNumbers,因为您为 num1 设置了 onAction 属性和文件 Main.fxml

中的 num2

输入数字并按 后,按操作员按钮之一,即 /*+-

按下操作员按钮之一后,按下? 按钮并显示正确的结果。

顺便说一句,我认为Clear 按钮无法正常工作。您应该编写一个单独的方法来执行 clear 操作,并将 FXML 文件中该按钮的 onAction 的值更改为新方法。

【讨论】:

  • 非常感谢。我听从了你的指示,它奏效了。是的,我现在要添加清除按钮的功能。
猜你喜欢
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多