微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我无法从 Textfield 读取数据

如何解决我无法从 Textfield 读取数据

我一直在尝试使用 JavaFX 制作一个简单的计算器,我对此很陌生。我有两个 TextField,其余按钮是 +-*/ 等运算符。问题是,每当我执行计算并按等号时,结果都是零。计算器没有为任何运算符执行计算。请帮助我解决这个问题,因为我无法理解为什么会这样。下面是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;
        }
    }
}

解决方法

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

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

onActionnum1 的 } 属性

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。