javaFX,用@FXML注入的控件都是null,控件名称和fxid都是没有问题的,现在不知道那里问题
错误是什么,贴个图看看
在JavaFX中,使用@FXML注解可以将FXML文件中声明的控件注入到控制器类中。在使用@FXML注解时,需要注意以下几点:
必须在FXML文件中为控件分配fx:id。fx:id的值必须是惟一的,并且不能包含空格或特殊字符(FX ID规则)。
控制器类必须通过fx:controller属性与FXML文件关联。在控制器类中,可以使用@FXML注解注入FXML文件中声明的控件,例如:
@FXML private Button myButton;
关于你遇到的问题,有一些可能的原因:
fx:id值错误:请检查FXML文件中控件的fx:id值是否与控制器类中使用@FXML注解的变量名相匹配。
控件未在FXML文件中声明:请确保FXML文件中声明了所有控件,并将它们分配给正确的fx:id值。
控制器类未与FXML文件关联:请在FXML文件中指定fx:controller属性,并将其设置为控制器类的完整类名。
以下是一些示例代码,展示如何正确使用@FXML注入控件:
FXML文件:
<AnchorPane fx:id="rootPane" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MyController">
<Button fx:id="myButton" text="Click me!" onAction="#handleButtonAction"/>
</AnchorPane>
控制器类:
public class MyController {
@FXML private AnchorPane rootPane;
@FXML private Button myButton;
public void initialize() {
// 在这里可以对控件进行初始化操作
}
@FXML
public void handleButtonAction(ActionEvent event) {
// 在这里处理按钮点击事件
}
}
在以上代码中,使用@FXML注解将AnchorPane和Button注入到控制器类中。initialize()方法用于在控制器类中对控件进行初始化操作。handleButtonAction()方法用于处理按钮的点击事件。