java - 在 Javafx 中触发事件后获取值
问题描述
我对 JavaFX 比较陌生,我已经在论坛上搜索了几天,但我还没有找到一个明确的解决方案来解决我的问题。请考虑以下代码:
public class MeasureController implements Initializable {
double retdx;
public void dxCalc() {
double dx = 5;
retdx = dx;
}
@FXML
void fireMeasure(ActionEvent event) {
dxCalc();
}
}
正如您在上面看到的,我有一个名为MeasureController的类,并且我有一个场景节点(按钮),当用户按下它时,它将调用fireMeasure事件中的方法。我的问题是我无法获得值double retdx或double dx并将其传递给另一个类控制器。我已经尝试使用以下代码,但似乎没有一个工作:
public class DataController extends Thread implements Initializable {
FXMLLoader fxmlLoader = new
FXMLLoader(getClass().getResource("Measure.fxml"));
Parent offsetScene = (Parent) fxmlLoader.load();
Stage offsetStage = new Stage();
offsetStage.initStyle(StageStyle.UTILITY);
offsetStage.setScene(new Scene(offsetScene));
offsetStage.show();
MeasureController ofX = new MeasureController();
double setX = ofX.retdx;
}
或者:
public class DataController extends Thread implements Initializable {
FXMLLoader fxmlLoader = new
FXMLLoader(getClass().getResource("Measure.fxml"));
Parent offsetScene = (Parent) fxmlLoader.load();
Stage offsetStage = new Stage();
offsetStage.initStyle(StageStyle.UTILITY);
offsetStage.setScene(new Scene(offsetScene));
offsetStage.show();
MeasureController ofX = new MeasureController();
double setX = ofX.dxCalc();
}
解决方案
你看到你如何用关键字定义你的dxCalc()
方法了吗?void
关键字告诉 Java 您希望该void
方法执行某些操作,但您不需要从它返回任何内容。
这void
就是所谓的“返回类型”或方法返回的值的类型。 void
本质上是“无”的意思。
现在,举个例子:
String getName() {
return "Rob";
}
这也是一种方法,但是你看怎么void
改成String
? 这意味着无论何时调用此方法,您都会得到 aString
作为回报。方法中的return
关键字实际上是告诉 Java 要返回什么值。
所以,给定上面的例子,如果我们使用下面的代码:
System.out.println(getName());
输出将是:
robert
在您的情况下,您正在调用该dxCalc()
方法,但由于该方法不返回值,因此您无法对计算结果执行任何操作。
如果您要将方法更改为以下内容:
double dxCalc() {
double dx = 5.0;
return dx;
}
您是在告诉 Java,当dxCalc()
调用该方法时,返回一个double
值。因此,在您fireMeasure()
的 FXML 按钮的方法中,您可以使用这样的值,例如:
@FXML
void fireMeasure() {
System.out.println(dxCalc());
}
方法调用被dxCalc()
方法的返回值替换,因此5.0
被打印出来。
推荐阅读
- python - 为什么 Tesseract 的 .traineddata 文件没有显示在 heroku 中,尽管已成功上传和提取?
- dart - 获取数据然后构建列表视图
- hyperledger-fabric - 无法将业务网络模型部署到 composer-playground?
- ios - 如何缓存文件,例如 PDFDocument,以防止重新加载并增加用户体验 - swift?
- html - 刷新页面改变UI的布局
- python-3.x - **和pow函数的使用区别
- javascript - ObservableArray 在 KnockOut JS 中选择选项
- react-native - Axios 未处理的承诺拒绝
- c# - await 任务之前和之后的部分代码在同一个线程中执行
- javascript - 如何在另一个 HTML 文件中使用 Vue.js 模板