java - 我无法从 Textfield 读取数据
问题描述
我一直在尝试使用 JavaFX 制作一个简单的计算器,对此我很陌生。我有两个TextField
s,其余按钮是运算符,如+
, -
, *
, /
。问题是,每当我执行计算并按下等号时,结果都是零。计算器未对任何运算符执行计算。请帮助我,因为我无法理解为什么会发生这种情况。下面是控制器文件的代码。
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
s 中输入值,即num1
和num2
。输入值后,键盘焦点位于其中一个TextField
s 上,您需要按 <ENTER>,因为按 <ENTER> 会调用方法processNumbers
,因为您在文件Main.fxml中为and设置了onAction
属性num1
num2
输入数字并按 <ENTER> 后,按操作按钮之一,即/
或*
或+
或-
。
按下操作员按钮之一后,按下该?
按钮并显示正确的结果。
顺便说一句,我认为该Clear
按钮无法正常工作。您应该编写一个单独的方法来执行清除操作,onAction
并将 FXML 文件中该按钮的值更改为新方法。
推荐阅读
- php - PHP - foreach 增量超过 1
- java - 为所有用户 Firebase 更新 UI
- scala - 在 Scala 中使用 Twitter Futures 进行异步日志记录
- sql-server - 来自 SQL Server 存储过程的 HTML 报告
- c# - 如何在 xamarin 中启动更新的活动
- mysql - mysql UPDATE 语句 where pricelist.import_date = ( SELECT max(pricelist.import_date) )
- java - Java10中的HttpRequest.BodyProcessor在哪里
- android - 在 React Native 中不能使用新导入的组件?
- r - rasterVis::levelplot 标题高度
- python - 使用 applescript 将消息发送到新的联系人/线程