gpt4 book ai didi

java - 如何在javafx中将String对象转换为TextField对象?

转载 作者:行者123 更新时间:2023-12-01 18:03:11 25 4
gpt4 key购买 nike

我有一个方法可以在鼠标单击事件时清除文本字段。但是这个方法需要为我想要应用它的每个文本字段实现。

或者,我尝试创建一个返回元素 id 的通用方法,并使用该元素 id 来清除关联的元素。但这个元素 id 以字符串形式返回。我无法将其转换为文本字段。还有其他方法可以实现上述逻辑吗?提前致谢。

public void clearUserName(MouseEvent event) {
String textFiledName =((Control) event.getSource()).getId(); //returns as a String
} // Cannot convert textFiledName to a TextField

最佳答案

您可以附加TextFielduserData给那些Control s,例如

Control control = ...
control.setUserData(textField);
public void clearUserName(MouseEvent event) {
TextField textField = (TextField) ((Node) event.getSource()).getUserData();
...
}

如果userData属性已在使用中,您也可以使用 properties map of Node 存储对 TextField 的引用相反。

使用辅助方法创建TextField s 可以通过将结果设置为 userData 来减少代码重复到 Control作为参数传递。

private static TextField createTextField(Control control) {
TextField result = new TextField();
control.setUserData(result);
return result;
}
<小时/>

另一种方法是使用反射按名称访问字段,但我不推荐它。这不适用于局部变量,但根本无法通过名称访问局部变量。

<小时/>

另一种可能性是添加一个方法来创建 TextField也获取 id 作为参数并添加 TextField发送至 Map<String, TextField> .

private final Map<String, TextField> textFields = new HashMap<>();

private TextField createTextField(String controlId) {
TextField result = new TextField();
textFields.put(controlId, result);
return result;
}

public void clearUserName(MouseEvent event) {
String textFiledName = ((Control) event.getSource()).getId();
TextField textField = textFields.get(textFiledName);
...
}

关于java - 如何在javafx中将String对象转换为TextField对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com