这是我的fxml代码和Java控制器文件代码。我试图使用“String s = tf.getText()。toString();”从句柄事件中的TEXTFIELD文件中获取文本。但它没有被执行。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane fx:id = "aPane" prefHeight="268.0" prefWidth="379.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sample.searchController">
<children>
<VBox layoutX="20.0" layoutY="36.0" prefHeight="232.0" prefWidth="333.0">
<children>
<HBox prefHeight="36.0" prefWidth="333.0">
<children>
<Label fx:id= "kw" text="Key Word : ">
<padding>
<Insets right="10.0" />
</padding>
</Label>
<TextField fx:id="tf" prefHeight="25.0" prefWidth="120.0" />
<Button fx:id="srch" mnemonicParsing="false" onAction="#handle" text="Search" >
<HBox.margin>
<Insets left="10.0" />
</HBox.margin>
</Button>
</children>
<padding>
<Insets left="6.0" top="6.0" />
</padding>
<VBox.margin>
<Insets />
</VBox.margin>
<opaqueInsets>
<Insets />
</opaqueInsets>
</HBox>
<TextArea fx:id="ta" prefHeight="174.0" prefWidth="282.0" />
</children>
</VBox>
</children>
</AnchorPane>
JAVA控制器代码:
public class searchController implements Initializable,EventHandler<ActionEvent> {
AnchorPane aPane = new AnchorPane();
Label kw = new Label();
public TextField tf;
Button srch = new Button();
TextArea ta = new TextArea();
//Text t;
String s = "priyam";
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
tf = new TextField();
}
@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
s=tf.getText().toString();
System.out.println(s);
}
}
答案 0 :(得分:1)
问题是你的初始化方法
public void initialize(URL location, ResourceBundle resources) {
tf = new TextField();
}
在此方法中,您将tf设置为新文本字段。这是一个问题,因为构建fxml文档时,文档构建器将自动使用它构造的文本字段填充该字段。但是然后你的初始化方法用空白覆盖它。所以当你tf.getText()你没有从UI中的那个获取文本时,你从你自己创建的空白文本中获取它。如果您只是注释掉tf = new TextField();
,那就可以了。
答案 1 :(得分:1)
方法initialize()
实际上覆盖了tf
的值。它使用新对象初始化您的TextField
对象tf
。
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
tf = new TextField();
}