javafx,在根窗口中切换窗格并保留内存



如标题中所述,我有FXML文件,我有一个UI,该UI设置为带有三个标签/按钮的UI,窗口的下半部分有一个窗格。每次单击标签/按钮时,窗格都必须切换到该相应的FXML文件。因此,换句话说,窗格必须始终处于相同的位置,有点像标签布局,但没有标签。

我知道我只需加载FXML文件的新实例就可以实现这一目标,但是,我想避免这种情况,因为当用户单击他以前打开的标签时,他应该能够看到他的早期输入。/p>

我有一些启动程序的main.java。某些控制器首次加载时控制UI的java,而某些FXML文件与该初始视图相对应。我该如何实施此过渡功能?P.S.我在Javafx的新手。

这是您如何实现它的mcve。
当然可以使用FXML

实现它
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class StageTest extends Application{
    private Pane pane1, pane2, mainPane;
    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Switch Panes");
        Button button1 = new Button("Show Pane 1");
        button1.setOnAction(e -> showPane1());
        Button button2 = new Button("Show Pane 2");
        button2.setOnAction(e -> showPane2());
        HBox buttonsPane = new HBox(5.);
        buttonsPane.getChildren().addAll(button1, button2);
        pane1 = getPane("PANE ONE");
        pane2 = getPane("PANE TWO");
        mainPane = new StackPane(pane1);
        BorderPane root = new BorderPane();
        root.setTop(buttonsPane);
        root.setCenter(mainPane);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    private void showPane1() {
        mainPane.getChildren().clear();
        mainPane.getChildren().add(pane1);
    }
    private void showPane2() {
        mainPane.getChildren().clear();
        mainPane.getChildren().add(pane2);
    }
    private Pane getPane(String txt) {
        VBox pane = new VBox();
        pane.getChildren().addAll(new TextArea(txt+" add text here: "));
        return pane;
    }
    public static void main(String[] args) {
        launch(args);
    }
}

最新更新