要在切换菜单项时在menubar以外展示预先绘制好的页面,您可以使用StackPane来实现这个功能。StackPane可以让您在同一个场景中叠放多个组件,只有一个组件处于可见状态,其他组件被隐藏。当您需要在菜单项事件回调中切换画面时,只需要改变StackPane的可见组件即可。

以下是示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MenuSwitchDemo extends Application {

    private StackPane stackPane;

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 创建MenuBar并添加Menu和MenuItem
        MenuBar menuBar = new MenuBar();
        Menu menu = new Menu("Menu");
        MenuItem item1 = new MenuItem("Item 1");
        MenuItem item2 = new MenuItem("Item 2");
        menu.getItems().addAll(item1, item2);
        menuBar.getMenus().add(menu);

        // 创建预先绘制好的页面
        Label label1 = new Label("Page 1");
        Label label2 = new Label("Page 2");

        // 创建StackPane并添加预先绘制好的页面
        stackPane = new StackPane();
        stackPane.getChildren().addAll(label1, label2);
        // 默认显示第一个页面
        stackPane.getChildren().get(0).setVisible(true);

        // 添加菜单项事件回调
        item1.setOnAction(event -> {
            // 切换到第一个页面
            stackPane.getChildren().get(0).setVisible(true);
            stackPane.getChildren().get(1).setVisible(false);
        });
        item2.setOnAction(event -> {
            // 切换到第二个页面
            stackPane.getChildren().get(0).setVisible(false);
            stackPane.getChildren().get(1).setVisible(true);
        });

        // 创建场景并添加MenuBar和StackPane
        Scene scene = new Scene(new StackPane(menuBar, stackPane), 400, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在这个示例中,我们先创建了一个MenuBar并添加了一个Menu和两个MenuItem。然后创建了两个Label作为预先绘制好的页面,再创建一个StackPane并将两个Label添加到其中。在菜单项事件回调中,我们根据需要改变StackPane中可见的组件,从而实现了在菜单项切换时展示预先绘制好的页面。最后,我们将MenuBar和StackPane添加到同一个StackPane中,并将其作为Scene的根节点。


原文地址: https://www.cveoy.top/t/topic/b72p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录