如何在javaFx borderPane中从LeftPane更改CenterPane?

我正在尝试在javafx中创建一个面板,并且我习惯将边框窗格作为主场景。 中央面板有4个窗口(main1,main2,main3,main4),左侧面板有一个导航菜单。

borderPane.setCenter(mainMenu1.getCenterMain1UI()); //borderPane.setCenter(mainMenu2.getCenterMain2UI()); //borderPane.setCenter(mainMenu3.getCenterMain3UI()); //borderPane.setCenter(mainMenu4.getCenterMain4UI()); public BorderPane getAppWindow(){ if (borderPane == null){ borderPane = new BorderPane(); borderPane.setTop(topPanel.getTopPanelUI()); borderPane.setBottom(bottomPanel.getBottomPanelUI()); borderPane.setLeft(leftPanel.getLeftPanelUI()); borderPane.setCenter(mainMenu.getCenterMainUI()); borderPane.setAlignment(borderPane.getCenter(), Pos.TOP_LEFT); } return borderPane; } 

在左侧面板控制器中

  public class LeftPanelController { public VBox leftPanelPane; public Button btnLeftPanelMainmenu; public Button btnLeftPanelDb; public Button btnLeftPanelOfficeInfo; public Button btnLeftPanelConfiguration; public void btnLeftPanelMainmenuOnClickAction(ActionEvent e){ change border pane center to main } public void btnLeftPanelDbOnClickAction(ActionEvent e){ change border pane center to DB } public void btnLeftPanelOfficeInfoOnClickAction(ActionEvent e){ change border pane center to DB } public void btnLeftPanelConfigurationOnClickAction(ActionEvent e){ change border pane center to configuration } } 

您需要为每个菜单按钮设置on action事件,以便更改BorderPane中心显示的内容。

这是一个例子:

 import java.util.LinkedHashMap; import java.util.Map; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.*; import javafx.stage.Stage; public class BorderPaneExample extends Application { private Map menuOptions; private Node defaultCenterNode = new Label("Example node 1"); @Override public void start(Stage primaryStage) throws Exception { menuOptions = new LinkedHashMap<>(); menuOptions.put("Main Menu", defaultCenterNode); menuOptions.put("History", new Label("Example node 2")); menuOptions.put("Office Info", new Label("Example node 3")); menuOptions.put("Configuration", new Label("Example node 4")); BorderPane root = new BorderPane(); root.setCenter(defaultCenterNode); VBox menuLayout = new VBox(); for (String key : menuOptions.keySet()) { Button button = new Button(key); button.setMaxWidth(Double.MAX_VALUE); button.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { root.setCenter(menuOptions.get(key)); } }); menuLayout.getChildren().add(button); } root.setLeft(menuLayout); Scene scene = new Scene(root, 800, 600); primaryStage.setScene(scene); primaryStage.setTitle("BorderPane Example"); primaryStage.setResizable(false); primaryStage.sizeToScene(); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 

我更改了左侧面板中的按钮单击方法;

  public void btnLeftPanelMainmenuOnClickAction(ActionEvent e) { AppWindow.borderPane.setCenter(AppWindow.mainMenu.getCenterMainUI()); } public void btnLeftPanelDbOnClickAction(ActionEvent e) { AppWindow.borderPane.setCenter(AppWindow.dbMenu.getCenterDbUI()); } public void btnLeftPanelConfigurationOnClickAction(ActionEvent e) { AppWindow.borderPane.setCenter(AppWindow.configMenu.getCenterConfigurationUI()); } 
Interesting Posts