Java 访问FXML生成的节点

Java 访问FXML生成的节点,java,css,javafx,fxml,Java,Css,Javafx,Fxml,我已经创建了一个简单的JavaFX程序,分别使用CSS和FXML进行样式和布局。如何从主Java应用程序编辑FXML中声明的节点?具体来说,我如何更改下面显示的text对象中的文本: CSS FXML 为FXML添加一个控制器类,并带有适当的注释: public class MyCtrl { @FXML private Text time; // name must be the same as fx:id } 在FXML中声明控制器(还有其他方法,这可能是最简单的): (您可能想在M

我已经创建了一个简单的JavaFX程序,分别使用CSS和FXML进行样式和布局。如何从主Java应用程序编辑FXML中声明的节点?具体来说,我如何更改下面显示的
text
对象中的文本:

CSS FXML
为FXML添加一个控制器类,并带有适当的注释:

public class MyCtrl {
    @FXML private Text time; // name must be the same as fx:id
}
在FXML中声明控制器(还有其他方法,这可能是最简单的):


(您可能想在
MyCtrl.initialize()
中设置一个计时器,以使用当前时间周期性地调用
setText()

当前我遇到以下错误:
javafx.fxml.LoadException:fx.controller不是有效的属性
有什么想法吗?是的,输入错误和我的错误:它是
fx:controller
(上面也更正了)。对不起!
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<BorderPane fx:id="mainStage" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" styleClass="stage" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <center>
    <Text fx:id="time" styleClass="time" text="Text" />
  </center>
  <stylesheets>
    <URL value="@application.css" />
  </stylesheets>
</BorderPane>
public class Main extends Application {

    @Override
    public void start(Stage stage) {
        
        Parent root;
        try {
            root = FXMLLoader.load(getClass().getResource("layout.fxml"));

            Scene scene = new Scene(root, 300, 275);
            
            stage.setTitle("FXML Welcome");
            stage.setScene(scene);
            stage.show();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
public class MyCtrl {
    @FXML private Text time; // name must be the same as fx:id
}
<BorderPane fx:id="mainStage" ... fx:controller="mypackage.MyCtrl">
public void initialize() {
    text.setText("xyz");
}