gpt4 book ai didi

java - 访问FXML生成的节点

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:43 26 4
gpt4 key购买 nike

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

CSS

.stage {
-fx-background-color: lightskyblue ;
-fx-effect: innershadow(three-pass-box , rgba(0,0,0,0.6), 25, 0.0, 0, 1 );
}

.time {
-fx-fill: white;
-fx-font-size: 95;
-fx-font-family: 'sans-serif';
-fx-effect: dropshadow(three-pass-box , rgba(0,0,0,0.6), 2, 0.0, 0, 1 );
}

FXML

<?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>

Java程序

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);
}
}

最佳答案

为 FXML 添加 Controller 类,并带有适当的注释:

public class MyCtrl {
@FXML private Text time; // name must be the same as fx:id
}

在 FXML 中声明 Controller (还有其他方法,这可能是最简单的):

<BorderPane fx:id="mainStage" ... fx:controller="mypackage.MyCtrl">

然后您可以从 Controller 中访问它,例如来自 initialize() 方法:

public void initialize() {
text.setText("xyz");
}

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

关于java - 访问FXML生成的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com