2016-03-04 44 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

相关问题