java - 在 JavaFX 中窗口之间传递信息的最佳方式是什么?

标签 java javafx java-8 javafx-8 fxml

我正在使用下面的代码来传递信息,但我想知道其他方式。在 FXMLDocumentController 的事件处理程序方法 handleSubmitButtonAction 中,我创建另一个加载 MainFXML 文件的窗口。之后,我拿到它的 Controller 并将我的信息发送到主窗口。有更好的方法吗?

public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField user;

    @FXML
    public void handleSubmitButtonAction(ActionEvent event) throws IOException {
        Alert dialogo = new Alert(Alert.AlertType.INFORMATION, "User: " + user.getText() + " logged in.");
        dialogo.showAndWait();
        Stage stage2 = (Stage) user.getScene().getWindow();
        stage2.close();

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MainFXML.fxml"));        
        Parent root = (Parent) fxmlLoader.load();
        MainFXMLController controller = fxmlLoader.<MainFXMLController>getController();        

        Scene scene = new Scene(root);
        Stage stage = new Stage();
        stage.setScene(scene);
        stage.show();

        controller.setUser(user.getText());        
    }

最佳答案

尝试给出一个简短的答案。

我所做的是创建 Controller 类的“应用程序模型”。应用程序模型的根当然是Application类的 Controller 。应用程序模型不会泄漏 GUI 元素,而是告诉主程序可关闭、已更改等。

public abstract class Part {
       public final ObservableMap<String, ActionHandler> getActionHandlers() {...}    
       public final ObservableBooleanValue closableProperty() {...}
       public final ReadOnlyBooleanProperty disabledProperty() {...}
       ....
}

public abstract class ViewPart extends Part {
       public final StringProperty titleProperty() { ... }
       public final ReadOnlyObjectProperty<Image> iconProperty() { ... }
       ....
}

public abstract class Editor extends Part {
        public final ObservableBooleanValue dirtyProperty() { .... }
}

就像在 Eclipse 中一样,这些部分可以有自己的窗口,但它们不一定有,它们也可以嵌入到另一个窗口中。该建模大致基于 Eclipse 的结构。

关于java - 在 JavaFX 中窗口之间传递信息的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750345/

相关文章:

java - Java-8 中 Xml 解码错误的任何替代解决方案? : “secure-processing org.xml.sax.SAXNotRecognizedException"

java - 使用流和 java8 创建对象列表的字段值的连接字符串

java - 截去小数点后某一点的双数

java - 使用泛型时,List 内部如何检查方法调用的类型?

css - JavaFX:标签上某些字体的奇怪偏移

java - 将按钮禁用属性绑定(bind)到 fxml 中的 TreeView 选择

java - 我应该如何设计这个程序?

java - 如何从 servlet 内初始化 hibernate session ?

java - 如何在 Java 中加快 PC/SC 读卡器上的卡缺失检测?

java - 如何在Java中正确创建对方法引用的弱引用