如何将参数传递给javafx中的辅助窗口?有没有办法与相应的控制器通信?
例如:用户从a中选择一个客户,TableView并打开一个新窗口,显示客户的信息.
Stage newStage = new Stage();
try
{
AnchorPane page = (AnchorPane) FXMLLoader.load(HectorGestion.class.getResource(fxmlResource));
Scene scene = new Scene(page);
newStage.setScene(scene);
newStage.setTitle(windowTitle);
newStage.setResizable(isResizable);
if(showRightAway)
{
newStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
newStage将是新窗口.问题是,我找不到告诉控制器在哪里查找客户信息的方法(通过传递id作为参数).
有任何想法吗?
parameters dependency-injection javafx parameter-passing fxml
为了掌握MVVM的概念,我已经阅读了几个博客并查看了一些项目.
根据我的理解,一个视图是愚蠢的,它只知道如何呈现传递给它的东西.
模型只是普通数据,而ViewModel就像两者之间的填充,它应该从模型中获取信息并将其传递给View,View应该知道如何呈现它.或者反过来说,如果视图中的信息发生变化,它应该将更改传递给模型.
但我仍然不知道如何应用这个概念.有人可以解释一个非常简单的场景,以便我能掌握这个概念吗?我已经看过几个项目,但它仍然没有完全合理,所以如果有人能用简单的英语写出来,那就太好了.
我很难理解存储库模式.
关于该主题有很多意见,比如在Repository模式中做得正确,但其他东西如Repository是新的Singleton或者再次像在不使用DAO使用Repository或只是采取Spring JPA Data + Hibernate + MySQL + MAVEN在某种程度上存储库看起来与DAO对象相同.
我已经厌倦了阅读这些东西,因为imho这不是一件很难的事情,因为它在很多文章中都有展示.
我觉得这样:似乎我想要的是这样的:
------------------------------------------------------------------------
| Server |
------------------------------------------------------------------------
| | | |
Client <-|-> Service Layer <-|-> Repository Layer <-|-> ORM / Database Layer |
| | | |
------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
在Service Layer需要*DTO的对象,并将这些的Repository Layer,基本上不外乎谁知道"的人"更是如何一个实体可以存储.
例如,假设您有一些工具的组合(请注意,这只是伪代码)
@Entity
class ToolSet {
@Id
public Long id;
@OneToOne
public Tool tool1;
@OneToOne
public Tool tool2;
}
@Entity
class …Run Code Online (Sandbox Code Playgroud) 我正在使用javaFX挣扎于MVC概念.我正在使用fxml文件构建一个javaFX应用程序.
每个fxml文件都分配了一个控制器,但我不认为这个控制器是MVC模式状态的控制器.我认为它像某种ViewController,它保存对fxml对象(按钮,窗格等)的引用.
我的问题是:这个"ViewController"与真正的"Controller"之间究竟有什么不同.什么对象应该做什么事情?我在哪里设置例如actionListeners?
我设计了一个javkx应用程序在jdk 7中工作正常.当我尝试在java 8中运行它时,我得到以下异常:
javafx.fxml.LoadException:
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2595)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3230)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3191)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3164)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3140)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3132)
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Root cannot be null
at javafx.scene.Scene.<init>(Scene.java:364)
at javafx.scene.Scene.<init>(Scene.java:232)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:204)
at javafx.concurrent.EventHelper.fireEvent(EventHelper.java:219)
at javafx.concurrent.Task.fireEvent(Task.java:1357)
at javafx.concurrent.Task.setState(Task.java:720)
at javafx.concurrent.Task$TaskCallable$2.run(Task.java:1438)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
at java.lang.Thread.run(Thread.java:744)
Run Code Online (Sandbox Code Playgroud)
我发现原因是在控制器类的initialize方法中我无法在任何静态组件中使用内置方法.(例如:staticMyTextField.setText()导致java …
我有一个主应用程序类和一个fxmlcontroller类,但我纠结于连接/组织(混淆了如何调用它们以及如何组织它们以使GUI连接业务逻辑)业务逻辑和GUI ....可以请一些人告诉我调用以下函数的顺序,或者可以帮助我如何调用它们....
public void Main() //constructor
public static void main() // our main
public void start() //I don't know what it is, what purpose it has
// and where should be called
//Note: In main function there is a call as following
Run Code Online (Sandbox Code Playgroud)
public void initialize() //I don't know what it is and what purpose it has
public fxmlController() // which function should be called here....
Run Code Online (Sandbox Code Playgroud) 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 …Run Code Online (Sandbox Code Playgroud) 我有两个场景Login.fxml和MainView.fxml以及两个不同的控制器LoginController.java和MainViewControler.java
在LoginController中,我执行整个登录过程并获取JSessionID的值并将其存储在对象中,如下所示:
loginGateway = loginGateway(gateway);
Run Code Online (Sandbox Code Playgroud)
现在在MainViewController中我需要使用this对象(loginGateway)来获取getJSessionID并向服务器发出其他请求.但是如何在另一个Controller类(MainViewController.java)中访问此对象?
可以将两个FXML(JavaFX)文件连接到一个控制器吗?我不能通过在每个FXML文件中更改"fx:controller"来做到这一点......
有任何想法吗?
我有一个显示人的父窗口,即:
姓名:约翰
姓氏:布朗
年龄:18
我单击编辑按钮,子窗口打开,更改名字,然后单击接受,子窗口关闭,更改保存在 mysql 数据库中,但父窗口仍显示旧值。我确实有一个有效的刷新方法,但是如何从子窗口调用它或将其设置为在关闭子窗口后调用?
父窗口和子窗口都有控制器和 fxml。任何帮助,将不胜感激。
java ×7
javafx ×7
fxml ×4
javafx-2 ×3
controller ×1
controllers ×1
hibernate ×1
java-7 ×1
java-8 ×1
javafx-8 ×1
mvvm ×1
parameters ×1
spring ×1