簡體   English   中英

從單獨的類訪問TextField

[英]Accessing TextField from a separate class

我目前正在嘗試制作一個非常基本的類MyController,該類在FXML創建的窗口中獲取TextField的內容,並在按下窗口中的按鈕時將其內容插入到打印到終端的字符串中。 完成此操作后,它將TextField的內容更改為“完成!”。

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!");
    }
}

控制器中的TextField是私有的,因此加載程序無法訪問它。 如下使用javafx.fxml.FXML批注,可以將其標記為FXML可訪問。

@FXML
private TextField message;

您也可以將其聲明為公共。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM