我使用FXML编写程序。在FXML中,我创建了4个TextFields和Button。我的问题是,当我单击此按钮时,如何将参数从FXML中的TextFields发送到Controller。
我正在使用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获取品牌,型号和里程。
答案 0 :(得分:2)
您需要将TextField
注入到控制器中,然后查询其文本属性。为此,请为要注入的每个元素指定一个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
。