Quiero encontrar un nodo caja vertical en una escena cargada de FXMLoader
gracias a Node#lookup()
pero tengo la siguiente excepción:JavaFX 2.0 + FXML - el comportamiento de búsqueda extraña
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.SplitPaneSkin$Content cannot be cast to javafx.scene.layout.VBox
El código:
public class Main extends Application {
public static void main(String[] args) {
Application.launch(Main.class, (java.lang.String[]) null);
}
@Override
public void start(Stage stage) throws Exception {
AnchorPane page = (AnchorPane) FXMLLoader.load(Main.class.getResource("test.fxml"));
Scene scene = new Scene(page);
stage.setScene(scene);
stage.show();
VBox myvbox = (VBox) page.lookup("#myvbox");
myvbox.getChildren().add(new Button("Hello world !!!"));
}
}
El archivo fxml:
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" >
<children>
<SplitPane dividerPositions="0.5" focusTraversable="true" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
<VBox fx:id="myvbox" prefHeight="398.0" prefWidth="421.0" />
</items>
</SplitPane>
</children>
</AnchorPane>
me gustaría saber: 1. ¿Por qué
de búsqueda de métodos devuelven un SplitPaneSkin$Content
y no un VBox
?
2. ¿Cómo puedo conseguir el VBox
de otra manera?
Gracias de antemano
He actualizado mi publique con un ejemplo simple. Sé la anotación de '@ FXML' pero no puedo usarla porque los identificadores se generan automáticamente. –
actualizado con una solución –
Genial, funciona bien. No había supuesto que FXMLoader les asignara la misma identificación que root child. Me alegra ver que el líder tecnológico de QA en el equipo de IU de JavaFX en Oracle responde a las preguntas de stackoverflow. ** Muchas gracias ** –