JavaFX 简单计算器 - 计算按钮动作
JavaFX Simple Calculator - Calculate Button Action
我正在为学校开发一个简单的 JavaFX 计算器,我坚持将一个动作事件放在一起,该动作事件从两个文本字段、选定的单选按钮和计算按钮时执行该事件被按下。
btnCalc.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
}
});
}
public void calculation(ActionEvent e) {
int num1, num2, answer;
num1 = Integer.parseInt(tfNum1.getText());
num2 = Integer.parseInt((tfNum2.getText()));
if (rbAdd.isSelected()) {
answer = num1 + num2;
} else if (rbSubtract.isSelected()) {
answer = num1 - num2;
} else if (rbMultiply.isSelected()) {
answer = num1 * num2;
} else {
answer = num1 / num2;
}
tfAns.setText(String.valueOf(answer));
Program Preview
函数 btnCalc.setOnAction() 要求一个 EventHandler 作为参数。这将做的是每次按下按钮时,它将执行该 EventHandler 的 handle() 方法(在您的情况下为空)。您可以通过 3 种不同的方式解决该问题:
- 您在 EventHandler 的 handle(ActionEvent e) 函数中调用您的 calculation(ActionEvent e) 函数(如果您这样做,您可以从 calculation() 中删除 ActionEvent 参数。
- 您将代码从 calculation(ActionEvent e) 复制到 handle(ActionEvent e)
- 这里最好的选择可能是使用 lambda。当一个接口只有 1 个函数时,您不必“制作”接口的对象,而是可以通过以下方式提供函数:
btnCalc.setOnAction(e -> calculation());
在这种情况下,您还可以从 calculation() 的参数中删除 ActionEvent e。
所以总代码如下所示:
btnCalc.setOnAction(e -> calculation());
public void calculation() {
int num1, num2, answer;
num1 = Integer.parseInt(tfNum1.getText());
num2 = Integer.parseInt((tfNum2.getText()));
if (rbAdd.isSelected()) {
answer = num1 + num2;
} else if (rbSubtract.isSelected()) {
answer = num1 - num2;
} else if (rbMultiply.isSelected()) {
answer = num1 * num2;
} else {
answer = num1 / num2;
}
tfAns.setText(String.valueOf(answer));
我正在为学校开发一个简单的 JavaFX 计算器,我坚持将一个动作事件放在一起,该动作事件从两个文本字段、选定的单选按钮和计算按钮时执行该事件被按下。
btnCalc.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
}
});
}
public void calculation(ActionEvent e) {
int num1, num2, answer;
num1 = Integer.parseInt(tfNum1.getText());
num2 = Integer.parseInt((tfNum2.getText()));
if (rbAdd.isSelected()) {
answer = num1 + num2;
} else if (rbSubtract.isSelected()) {
answer = num1 - num2;
} else if (rbMultiply.isSelected()) {
answer = num1 * num2;
} else {
answer = num1 / num2;
}
tfAns.setText(String.valueOf(answer));
Program Preview
函数 btnCalc.setOnAction() 要求一个 EventHandler 作为参数。这将做的是每次按下按钮时,它将执行该 EventHandler 的 handle() 方法(在您的情况下为空)。您可以通过 3 种不同的方式解决该问题:
- 您在 EventHandler 的 handle(ActionEvent e) 函数中调用您的 calculation(ActionEvent e) 函数(如果您这样做,您可以从 calculation() 中删除 ActionEvent 参数。
- 您将代码从 calculation(ActionEvent e) 复制到 handle(ActionEvent e)
- 这里最好的选择可能是使用 lambda。当一个接口只有 1 个函数时,您不必“制作”接口的对象,而是可以通过以下方式提供函数:
btnCalc.setOnAction(e -> calculation());
在这种情况下,您还可以从 calculation() 的参数中删除 ActionEvent e。
所以总代码如下所示:
btnCalc.setOnAction(e -> calculation());
public void calculation() {
int num1, num2, answer;
num1 = Integer.parseInt(tfNum1.getText());
num2 = Integer.parseInt((tfNum2.getText()));
if (rbAdd.isSelected()) {
answer = num1 + num2;
} else if (rbSubtract.isSelected()) {
answer = num1 - num2;
} else if (rbMultiply.isSelected()) {
answer = num1 * num2;
} else {
answer = num1 / num2;
}
tfAns.setText(String.valueOf(answer));