我正在寻找一种方法来预测我的程序中的一个吸气剂。我有一堆动态创建的TextField:
fields = new TextField[105];
for (int i = 0; i < fields.length; i++) {
fields[i] = new TextField();
}
在我的程序中它看起来像这样:
这个程序的目的是使用图片底部列表中的单词,并猜测你必须填写的文字到TextFields a.k.a. LetterPyramid中。因此,我想将TextField的文本与从文本文件中读入我的程序的正确答案进行比较。我面临的问题是,我不知道如何预测一个getter,它将TextField从当前聚焦的数组中返回。有没有人可以帮我这个?
提前致谢!
以下是一些代码块,可帮助您了解我的问题:
这是我想要返回聚焦的TextField
的getterpublic TextField getField() {
return theFocusedTextField;
}
将接收焦点字段并在我的“model”类中调用方法checkInput()的处理程序。
view.getField().textProperty().addListener((observable, oldValue, newValue) -> {
if (newValue.length() == 1) {
Log.debug("Old value: " + oldValue + "\nNew value: " + newValue);
boolean isCorrect = model.checkInput(newValue);
if (isCorrect) {
view.getField().setStyle("-fx-background-color: darkgreen; -fx-text-fill: white");
} else {
view.getField().setStyle("-fx-background-color: darkred; -fx-text-fill: white");
}
} else if (newValue.equals("")) {
view.getField().setStyle("-fx-background-color: darkred; -fx-text-fill: white");
}
});
此刻,它会收到我自己设定的预定义字段。检查答案的代码有效。感谢任何有帮助的人,如果我自己找到方法,我一定会在这里发布。
答案 0 :(得分:0)
假设您已定义:
private TextField theFocusedTextField ;
然后您只需要:
fields = new TextField[105];
for (int i = 0; i < fields.length; i++) {
TextField textField = new TextField();
fields[i] = textField ;
textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
theFocusedTextField = textField ;
} else {
theFocusedTextField = null ;
}
});
}
答案 1 :(得分:0)
可以使用focusOwner
property从Node
检索当前关注的Scene
。您可以从与Scene
相同的场景中的任何Node
获取TextField
。
示例:
Scene scene = fields[0].getScene();
Node focusOwner = scene.getFocusOwner();
if (focusOwner instanceof TextField) {
TextField focusedField = (TextField) focusOwner;
...
}
请注意,可以检索不在数组中的TextField
这样的方式,因此在这种情况下,您可能需要检查此项,例如通过检查parent
,styleClass
es,...(假设其中一个允许您确定这是否是数组中的TextField
之一) -