我正在尝试从场景中提取内容并放入窗格。问题是如果我从场景中获取根组件并将其添加到窗格中,则窗格中不会显示任何内容。
注意:场景未添加到舞台或任何其他组件。
以下是我的(现在是凌乱的)代码:
公共类JanelaPrincipalController扩展了Controller实现 可初始化{
@FXML private ResourceBundle resources; @FXML private URL location; @FXML private StackPane conteudo; @FXML private MenuItem miBolsas; @FXML private MenuItem miCorretoras; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { miBolsas.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent t) { System.out.println("Action performed"); conteudo.getChildren().clear(); SceneData sceneData = MainClass.getInstance().getScene(SceneType.LISTA_BOLSAS); Parent root = sceneData.scene().getRoot(); conteudo.getChildren().add(root); //conteudo.getChildren().add(new Label("Teste")); } }); } @Override public void open() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void process(Action action) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void close() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. }
}
答案 0 :(得分:1)
同一节点(在本例中为Parent),不会显示为twise,因此,如果您的场景正在显示,则需要从场景中删除root,然后将其添加到stackpane。
答案 1 :(得分:0)
问题在于现场。根节点已添加到场景中,因此无法在其他位置显示。必须从场景中删除节点。
我正在重构代码,我现在不需要直接向场景添加一些内容。
我在我的MainClass中使用了这个方法:
public static SceneData loadSceneFromFXML(final String fxmlFile, final Controller controller) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(MainClass.class.getResource(fxmlFile));
if (controller != null) {
fxmlLoader.setController(controller);
}
Parent root = (Parent) fxmlLoader.load();
Scene scene = new Scene(root);
scene.getStylesheets().add(CSS);
return new SceneData(scene, controller);
}