我目前正在尝试创建一个非常基类MyController,它在FXML创建的窗口中获取TextField的内容,当按下窗口中的按钮时,将其内容插入到打印到终端的字符串。完成后,它会将TextField的内容更改为“done!”。
FXML文件的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="practice1.MyController">
<children>
<Button fx:id="HelloWorld" layoutX="30.0" layoutY="34.0" mnemonicParsing="false" onAction="#sayHello" text="Hello World" />
<TextField fx:id="message" layoutX="30.0" layoutY="77.0" />
</children>
</AnchorPane>
唯一感兴趣的信息是TextField有fx:id“message”。
我的班级MyController
的代码如下:
package practice1;
import javafx.event.*;
import javafx.scene.control.TextField;
public class MyController {
private TextField message;
public void sayHello(ActionEvent event) {
System.out.print("You said \"");
System.out.print(message.getText());
System.out.println("\"");
message.setText("done!");
}
}
答案 0 :(得分:0)
控制器中的TextField是私有的,因此加载程序无法访问它。使用javafx.fxml.FXML注释如下所示,您可以将其标记为FXML可访问。
@FXML
private TextField message;
您也可以将其声明为公开。