【问题标题】:How to convert a String object into TextField Object in javafx?如何在 javafx 中将 String 对象转换为 TextField 对象?
【发布时间】:2016-08-22 10:57:04
【问题描述】:

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

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

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

【问题讨论】:

  • 你想设置 String 或将 String 对象转换为 TextField 对象
  • 如何将String 转换为 UI 元素?您是否跳过了 Java 的所有基础知识?
  • @Kayaman 好吧,他很难用一句话来表达他到底想要什么xyproblem.info
  • 是的,我的措辞可能模棱两可。 B'bek Shakya 说对了!!我只想将 String 对象转换为 TextField 对象

标签: java javafx


【解决方案1】:

您可以将TextFields 附加为userData 到那些Controls,例如

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

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

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

private static TextField createTextField(Control control) {
    TextField result = new TextField();
    control.setUserData(result);
    return result;
}

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


另一种可能性是添加一个创建TextFields 的方法,该方法也将id 作为参数并将TextFields 添加到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);
    ...
}

【讨论】:

  • 是的,但我仍然必须将我所有的 TextFields 定义为 UserData 对吗?我们可以使用通用方法而不指定我们拥有的所有文本字段吗?
【解决方案2】:

您可以简单地使用以下方法...

public void clearUserName(MouseEvent event) {
    userName.clear(); //Here userName is the label name.
}

【讨论】:

    猜你喜欢
    • 2017-03-17
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2012-09-15
    • 2011-02-07
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多