JavaFX存在一个应用程序,应用程序从以下Main.class文件开始extends Application:
public class Main extends Application {
/**
* Keep a reference to the main Stage
*/
public static Stage stage;
/**
* MainScene Controller
*/
public static MainScene mainSceneController;
/**
* The Capture Window of the application
*/
public static CaptureWindow captureWindowController;
/**
* Settings Scene Controller
*/
public static SettingsController settingsController;
@Override
public void start(Stage primary) throws Exception {
stage = primary;
..........
// CaptureWindow
FXMLLoader loader1 = new FXMLLoader(getClass().getResource("/fxml/CaptureWindow.fxml"));
loader1.load();
captureWindowController = loader1.getController();
// MainScene
mainSceneController = new MainScene();
.........
}
}
Run Code Online (Sandbox Code Playgroud)
描述
正如你可以在上面看到我有3个FXMLControllers(一个是可重复使用[ extends StackPane],其他没有).我已经宣布所有这些静态的原因我想从一个访问变量FXMLController从其他FXMLControllers.我使用这个策略我每次使用的时间JavaFX和我不我觉得很好......
如何更改下面的代码,这样我就可以访问一个变量或方法FXMLController从其他FXMLController?没有使用static关键字可以吗?
考虑控制器由不同的类表示,这些类可以位于不同的包中.
在写这个问题之前,我在FXML Controller中查看了Static @FXML变量
实际上这个问题的答案似乎有点复杂,它与 MVC 模式及其发展至今有关。我们将使用 MVP 模式。
经过长时间的讨论,我在这个网站上获得了一个链接http://martinfowler.com/eaaDev/uiArchs.htmlSmalltalk ,定义了从旧时代到现在使用的不同模式的历史演变。
实际的解决方案是使用Model Viewer Presenter Pattern(MVP)它,可以使用这些图像直观地描述:
有关更多信息,您可以阅读(http://www.wildcrest.com/Potel/Portfolio/mvp.pdf)
有关 JavaFX 的示例,请查看James_D此处的答案(Applying MVC With JavaFx)
最后但并非最不重要的一点是看看这里的评论:
最后:
如果有任何不准确的地方,请随时编辑。
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |