Java 访问FXML生成的节点
我已经创建了一个简单的JavaFX程序,分别使用CSS和FXML进行样式和布局。如何从主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
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");
}