我正在使用2個不同的BorderPanes,BorderPane A和BorderPane B編寫應用程序。 該應用程序有2個菜單項,單擊它時將顯示BorderPane A或BorderPane B.如何從JavaFX應用程序類別檢索舞臺
這是應用程序類,它有我想使用
public class SampleApp extends Application {
private Stage primaryStage;
public static void main(final String[] args) {
launch(args);
}
@Override
public void start(final Stage stage)
throws Exception {
final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SampleAppFactory.class);
final SpringFxmlLoader loader = new SpringFxmlLoader(context);
final Parent root = (Parent) loader.load("Main.fxml", Main.class);
final Scene scene = new Scene(root, 600, 480, Color.ALICEBLUE);
this.primaryStage = stage;
scene.getStylesheets().add("fxmlapp.css");
stage.setScene(scene);
stage.show();
}
}
的Main.java類有兩個BorderPanes的階段,當菜單項被選擇我想顯示上應用程序的borderpane。
是否有人知道如何使用此方法顯示Borderpane(設置舞臺場景)(showBorderPane)? 我想找回舞臺上,並設定德borderpane場景:
public class Main extends BorderPane implements Initializable {
@FXML
private Verbinding verbindingContent; // BORDERPANE A
@FXML
private Beheer beheerContent;// BORDERPANE A
@FXML
private MenuBar menuContent;
@Override
public void initialize(final URL url, final ResourceBundle rb) {
System.out.println(url);
menuContent.setFocusTraversable(true);
}
@FXML
private void showBorderPane(final ActionEvent event) {
final MenuItem menuItem = (MenuItem) event.getSource();
}
@FXML
private void handleCloseAction(final ActionEvent event) {
System.exit(0);
}
}
我的main.xml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.effect.*?>
<?import nl.mamaloe.tab.view.Main?>
<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="nl.mamaloe.tab.view.Main">
<fx:define>
<fx:include source="scene/Beheer.fxml" fx:id="beheerContent" />
<!-- fx:include source="Menu.fxml" fx:id="menuContent"/-->
</fx:define>
<top>
<MenuBar fx:id="menuContent" onMouseClicked="#handleKeyInput">
<menus>
<Menu text="Systeem">
<items>
<MenuItem text="Verbinding maken" onAction="#handleVerbindingAction"/>
<SeparatorMenuItem />
<MenuItem text="Afsluiten" onAction="#handleCloseAction"/>
</items>
</Menu>
<Menu text="TAB">
<items>
<MenuItem text="Script toevoegen" onAction="#handleAboutAction"/>
<SeparatorMenuItem />
<MenuItem text="Script draaien" />
</items>
</Menu>
<Menu text="About" onAction="#handleAboutAction">
<items>
<MenuItem text="Op basis van wizard" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<center> <Label text="Add New Dock of Home" />
</center>
我已經看到它是可能會從應用程序的啓動方法中執行此操作。 但我想在Main.java中實現它,因爲結構,我主要使用FXML來聲明GUI。
我似乎只想在第一個例子中只顯示borderPane的中心。但這似乎並不奏效。 因爲當我調用this.getScene();從shoBorderPane方法 我得到一個空指針異常,我之前嘗試過,因爲我也認爲主要的Borderpane應該有一個場景。或者我在做什麼? – Firebird
我不明白。兒童邊界線已經在主邊界線內。你爲什麼試圖讓它們重新居中?而在你的情況this.setCenter()就夠了,不需要this.getScene()。 –
另外附上你的main.fxml以更好地理解。 –