【发布时间】:2018-10-20 03:45:14
【问题描述】:
我是 Java FX 的新手,尤其是场景构建器的新手。我有一个基于体重计算成绩的小应用程序。我向它添加了一个菜单栏,但 Scene Builder 只会让我在事件上绑定一个 mouseClick()。问题是,我已经有一个与此事件相关的计算按钮(用于计算成绩)。我希望我的MenuItem 在单击时打开我创建的对话框。
这是我目前让该方法起作用的尝试:
@FXML
public void mouseClick(MouseEvent mouseEvent)
{
if (mouseEvent.getSource().equals(calcBtn))
{
DecimalFormat df = new DecimalFormat("#.##");
double result = calcGrade();
resultLbl.setText("Overall Grade: " + df.format(result) + "%");
}
if (mouseEvent.getSource().equals(aboutMenu))
{
DialogBox.showInformation("About", "Some dialog here.");
}
}
在 Swing 中,我记得做过这样的事情来处理多个源对象:
if (e.getSource() == menuItem)
{
//do stuff
}
else if (e.getSource() == calculateBtn)
{
//calculate stuff
}
但是这不起作用,计算按钮的代码无论如何都会执行。
由于 Scene Builder 将动作绑定到 Controller 类的方式,我不确定在单击鼠标按钮时如何分离这两个不同来源之间的动作。当我尝试在事件上绑定自定义时,场景构建器对我大喊大叫,并且只允许 mouseClick()。处理这种情况有什么好的解决方案?
【问题讨论】:
-
原则上做法是正确的,代码没有错误。这意味着问题出在其他地方。
标签: java javafx scenebuilder