清除另一个类的TextField

时间:2014-08-07 11:06:27

标签: java javafx

在我的主要FXML控制器类Alpha中,我有一个带有文本字段的掩码和一个清除它的按钮:

@FXML
private TextField testTF = new TextField();

@FXML
public void clearText() {
    if (testTF != null)
    testTF.clear();
}

如果我在文本字段中输入文本并点击清除按钮,则文本将被删除。到目前为止,一切都很好。

我有第二个控制器类Beta。相应的fxml文件包含菜单布局(菜单栏)。如果菜单项" new"单击,它也应该清除我在Alpha类中的文本字段。

public class Beta {
    private void newApp() {
        Alpha a = new Alpha();
        a.clear();
    }
}

但没有任何事情发生。我在这做错了什么?如何单击FXML控制器类中的按钮/菜单项并使其清除另一个FXML控制器类中的文本字段?

1 个答案:

答案 0 :(得分:1)

您不应该使用new TextField();实例化testTF:FXMLLoader会自动分配testTF对应的TextField对象,因为您有@FXML标记。

您在类Alpha中重新实例化Beta,它与加载fxml时创建的private TextField testTF分开存在,从而生成两个单独的Beta个对象。要么Alpha引用 public class Alpha implements Initializable { public static TextField tf; @FXML private TextField testTF; @Override public void initialize(URL location, ResourceBundle resources) { tf = testTF; } } public class Beta { private void newApp() { if (Alpha.tf != null) Alpha.tf.clear(); } } 的第一个实例,要么尝试这个替代方案:

{{1}}