2016-03-04 48 views
0

我很抱歉問這個愚蠢的問題。我無法解決它,我需要指導。使用javafx在不同的fxml中使用MouseControl的問題

在我的應用程序開始菜單中我主要的Java代碼

@Override 
public void start(Stage primaryStage) throws Exception { 
    this.primaryStage = primaryStage; 
    this.primaryStage.setTitle("MONC GUI :: Abhijit Bhattacharyya"); 
    FXMLLoader loader = new FXMLLoader(MoncGUI.class.getResource("RootLayout.fxml")); 
    rootLayout = (BorderPane) loader.load();   
    //Scene scene = new Scene(rootLayout); 
    rootScene = new Scene(rootLayout); 
    primaryStage.setScene(rootScene);     
    RootLayoutController controller = loader.getController(); 
    controller.setMainApp(this); 
    primaryStage.show(); 
} 
    ...... 

然後,我選擇通過作爲

public void GeomStart() { 
    try { 
     FXMLLoader loader = new FXMLLoader(MoncGUI.class.getResource("Geom.fxml")); 
     AnchorPane geomPage = (AnchorPane)loader.load();    
     rootLayout.setCenter(geomPage); 
     GeomController controller = loader.getController(); 
     controller.setMyScene(rootScene); 
    } catch (IOException ex) { 
     System.out.println(" Problem in loading geometry set"); 
     Logger.getLogger(MoncGUI.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

的主類打開另一個FXML去一個特定的菜單頁面geom.fxml與geomController.java關聯,它在屏幕上放置一個原始的幾何形式,我希望它被旋轉。我在互聯網上找到了mouseHandler代碼,它應該被激活,因爲screen通過了。

我很困惑應該通過哪個屏幕。它是開始時由主類啓動的根屏幕,還是我需要在此控制器的本地定義一個新屏幕。我嘗試了一個本地控制器的屏幕,但代碼句柄沒有傳遞給MouseHandler代碼。

感謝和問候

回答

0

根本沒有必要通過場景。在控制器內部,您可以訪問您在FXML文件中定義的節點。一旦這個文件被加載並且你已經將其根節點附加到場景圖中,你可以通過調用任何這些節點的.getScene()方法來獲得場景。

+0

感謝您的回覆。作爲這個問題的一部分,我想問你一個相關的問題。這個新的GeoController需要場景旁邊的舞臺來控制3D旋轉鼠標以及Camera。我有一個想法,那個階段曾經被定義爲Root。我是否需要啓用Root Stage或者我需要定義本地舞臺? – vegaonline

相關問題