【问题标题】:Java - passing variable from FXML ald Java ControllerJava - 从 FXML ald Java 控制器传递变量
【发布时间】:2019-05-06 06:09:04
【问题描述】:

我使用 FXML 制作了一个程序。在 FXML 中,我创建了 4 个文本字段和按钮。我的问题是当我单击此按钮时,如何将 FXML 中的 TextFields 中的参数发送到控制器。

我正在使用 FXML 制作 JavaFX 应用程序。我将此应用程序连接到数据库。我搜索了前一周没有成功,但没有发现任何可以帮助我的特别之处。

<children>
    <BorderPane prefHeight="30.0" prefWidth="700.0">
        <bottom>
            <AnchorPane>
                <children>
                    <Button text="Add car" fx:id="button" onAction="#AddCar"/>
                </children>
            </AnchorPane>
        </bottom>
    </BorderPane>
    <TextField promptText="Brand" id="carBrand"/>
    <TextField promptText="Model" id="carModel"/>
    <TextField promptText="Mileage" id="carMileage"/>
</children>

我希望我单击 FXML 中的按钮 - Java 控制器从 FXML 获取参数并写入控制台。实际上我知道如何在控制台中编写,但我的问题是我不知道如何从 FXML 中获取品牌、型号和里程。

【问题讨论】:

    标签: java javafx fxml


    【解决方案1】:

    您需要将TextFields 注入您的控制器,然后查询它们的文本属性。为此,请为要注入的每个元素指定一个fx:id,并向控制器类添加一个具有相同类型和名称的字段。如果该字段不公开,则需要使用 @FXML 对其进行注释。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.TextField?>
    <?import javafx.scene.layout.VBox?>
    
    <VBox xmlns="http://javafx.com/javafx/12.0.1" xmlns:fx="http://javafx.com/fxml/1"
          fx:controller="com.example.Controller" spacing="10" alignment="center">
        <TextField fx:id="carBrand" promptText="Brand"/>
        <TextField fx:id="carModel" promptText="Model"/>
        <TextField fx:id="carMileage" promptText="Mileage"/>
        <Button text="Add car" onAction="#addCar"/>
    </VBox>
    

    package com.example;
    
    import javafx.fxml.FXML;
    import javafx.event.ActionEvent;
    import javafx.scene.control.TextField;
    
    public class Controller {
    
        @FXML private TextField carBrand;
        @FXML private TextField carModel;
        @FXML private TextField carMileage;
    
        @FXML
        private void addCar(ActionEvent event) {
            event.consume();
    
            String brand = carBrand.getText();
            String model = carModel.getText();
            String mileage = carMileage.getText();
            // do something with values...
        }
    
    }
    

    注意:遵循 Java 命名约定,方法名称使用 camelCase。换句话说,按钮的操作方法的名称应该是addCar(如上)而不是AddCar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多