我正在学习如何使用javafx,以及通过创建一个非常基本的计算器scenebuilder,但我遇到了一个问题,我很难找到一种方法,使每个按钮都没有一个单独的函数。我需要知道一个按钮是否有办法改变一个变量,或者给按钮链接到的action-event方法提供参数,这样我就不需要为每个按钮调用另一个函数分别使用不同的方法。这是我工作的一个例子。
@FXML
private Button one;
private Button two;
//both buttons are linked to NumChange
private void NumChange(ActionEvent e) {
//update the number to preform an operation with here
}
我如何让所有的数字按钮使用相同的函数,但发送参数,使它可以做不同的事情?
我找到的所有答案都涉及到获取按钮的文本,但是我的计算器很奇怪,而且上面有拼写的单词,所以我不能这样做,我能做什么?
1条答案
按热度按时间b5lpy0ml1#
如果您在fxml中注册处理程序,最好的方法就是为每个按钮定义不同的方法。您可以按如下方式最小化代码。
定义您的
numChange(...)
方法获取所需的参数,例如。然后为每个按钮定义一个不同的处理程序方法
numChange()
:然后在fxml中做一个明显的改变:
您可以更改
numChange()
当然,根据需要接受。另一个基于fxml的解决方案避免了每个按钮都有一个专用方法,它通过设置节点的用户数据将值与fxml中的节点相关联:
然而,这只会导致大量的向下转换和类型转换,这使得它不如以前的解决方案有用:
最后,直接在控制器中注册处理程序可能更容易:
和