已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
2天前关闭。
Improve this question
我正在开发一个javafx应用程序,我需要访问场景中单个Anchorpane的控制器来调用一些函数
System.out.println(listPane.getChildren());
<This is the part that does not work VVV >
recipeController rController = recipe.getController();
rController.callFunction().
listPane.getChildren().add(recipe);
我不能使用FXMLLoader,因为我只能在创建配方时访问它,并且我需要能够在创建配方后访问它
这是我试图获取控制器的recipe fxml文件
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:id="recipePane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="100.0" prefWidth="100.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cookbook.recipeController">
<children>
<Label fx:id="recipeNamePane" alignment="CENTER" layoutY="-3.0" prefHeight="34.0" prefWidth="100.0" text="Name" />
<Button layoutY="31.0" mnemonicParsing="false" prefHeight="70.0" prefWidth="100.0" text="Button" />
</children>
</AnchorPane>
1条答案
按热度按时间yqyhoc1h1#
这个问题对我来说没有什么意义,它很可能表明你的架构方法和推理应用程序的方式应该改变。
(By默认值)AnchorPane没有控制器。您无法从没有控制器的对象获取控制器。
相反,
FXMLLoader
将创建像AnchorPane
这样的对象和节点,并可以使用@FXML
注解(或公共方法)将它们注入到FXML控制器中。但是,如果您真的想这样做,您可以在注入的
AnchorPane
的属性中存储对控制器的引用。假设在FXML中
fx:id
为anchorPane
,则在控制器中有:然后从
anchorPane
获取控制器(将MyControllerClass
更改为您使用的任何控制器):