は私がNode#lookup()
からFXMLoader
おかげでロードシーンでのVBoxノードを見つけたいが、私は次の例外を取得:のJavaFX 2.0 + FXML - 奇妙なルックアップ動作
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.SplitPaneSkin$Content cannot be cast to javafx.scene.layout.VBox
コード:
を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ファイル:
<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>
私が知りたいのですが:
1.なぜ、ルックアップ方法がSplitPaneSkin$Content
ないVBox
を返しますか?
2.別の方法でVBox
をどうすれば入手できますか?
私は自分を更新しました簡単な例で投稿してください。私は '@ FXML'アノテーションを知っていますが、IDは自動的に生成されるので使用できません。 –
が回避策で更新されました –
素晴らしいです、それはうまく動作します。私はFXMLoaderがrootの子と同じidを割り当てたとは考えていませんでした。 OracleのJavaFX UIチームのQAテクニカル・リードがスタックオーバーフローの問題に対応しているのを見てうれしいです。 **多くのありがとう** –