在MVC中使用FXML在窗格之间切换

时间:2017-09-30 20:34:52

标签: java user-interface model-view-controller javafx scenebuilder

我主要使用FXML文件,我有我的控制器;

@FXML
public Label htmlLabel;
private Main main;

...

@FXML
public void htmlClick() {
    System.out.println("I am cowgoat");
    //main.showHtmlPane();
}

我希望main.showHtmlPane();显示另一个窗格。

此窗格位于锚定窗格的下半部分,并且只要单击按钮,它就是该阶段的唯一部分。假设不只有一个标签。标签在FXML中有一个动作,可以点击。

在我的Main中,我想在启动时启动所有三个标签/窗格,这样每次单击每个标签时我都不会创建新实例。换句话说,窗格应该在从一个窗格到下一个窗格时保留输入。

参见main;

@Override
public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("../view/main.fxml"));
    Scene scene = new Scene(root); ...
    ...
    ...
    primaryStage.setScene(scene);
    primaryStage.show();
}

所以我的主窗格在启动时启动。切换到其他人时,必须重新审视我的主要内容。

显然我想在main中使用一些函数,例如showHtmlPane();,但我不知道该怎么做。我的第一个想法是我无法更改我的fxml文件的各个元素,所以我需要新的元素。

所以我创建了单独的fxml文件,其中所有内容都保持不变,只是更改了下方窗格中的内容,这将保留带有标签栏的窗口的图像。我不想实现javafx标签,因为这不是我想要的。

旁注: 这必须是一个适用于fxml文件的解决方案。如果有办法分割我的fxml文件的上半部分和下半部分也可以。记住,我的UI有圆角,窗格在舞台的上半部分有一些叠加,但这可能很容易解决。

0 个答案:

没有答案