如何通过id更改fxml标签文本

时间:2015-09-27 08:38:07

标签: java javafx javafx-8 fxml

我的fxml文件上有Label:

 <children>
    <Label fx:id="lblTest" text="Label" />
 </children>

如何从主/控制器java文件中将文本从“标签”更改为“Hello”?

我刚开始学习JavaFX的基础知识,我不确定是否可能

2 个答案:

答案 0 :(得分:9)

问题

您希望在作为FXML / Controller / MainApp

一部分的标签上设置文本

解决方案

通常你有三个文件:

  1. FXML-文献
  2. FXML - 控制器
  3. 扩展应用程序并覆盖start方法的类
  4. 一点例子:

    LabelText.java

    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class LabelText extends Application {
    
        @Override
        public void start(Stage stage) throws Exception {
            Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    FXMLDocument.fxml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    
    <AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.40" fx:controller="labeltext.FXMLDocumentController">
        <children>
            <Label fx:id="lblTest" layoutX="126.0" layoutY="92.0" minHeight="16" minWidth="69" />
        </children>
    </AnchorPane>
    

    FXMLDocumentController.java

    package labeltext;
    
    import javafx.fxml.FXML;
    import javafx.scene.control.Label;
    
    public class FXMLDocumentController {
    
        @FXML
        private Label lblTest;
    
        @FXML
        private void initialize() {
            lblTest.setText("I'm a Label.");
        }
    }
    

    就是这样。

答案 1 :(得分:0)

Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
Label lblData = (Label) root.lookup("#lblTest");
if (lblData!=null) lblData.setText("bye");