Ben Node#lookup()
için FXMLoader
sayesinde yüklü bir sahnede bir VBox düğümü bulmak istiyorum ama şu durum almak:JavaFX 2.0 + FXML - garip arama davranışı
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.SplitPaneSkin$Content cannot be cast to javafx.scene.layout.VBox
kodu:
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 !!!"));
}
}
fxml dosyası:
<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>
ben bilmek istiyorum :
1. Neden arama yöntemi SplitPaneSkin$Content
ve bir VBox
dönmek?
2. VBox
'u başka bir şekilde nasıl alabilirim?
Ben güncelledik benim Basit bir örnekle gönderin. 'FXML' ek açıklamalarını biliyorum ama kullanamıyorum çünkü kimlikleri otomatik olarak üretiliyor. –
bir geçici çözüm ile güncelleştirildi –
Harika, iyi çalışıyor. FXMLoader'ın onlara root çocukla aynı kimliği atamasını beklemiyordum. Oracle'ın JavaFX UI ekibinde QA teknik sorumlusunu görmek için mutluyum. ** Çok teşekkürler ** –