当前位置: 首页 > 知识库问答 >
问题:

用于文本字段数组中聚焦文本字段的JavaFX-getter

公西俊德
2023-03-14

我在寻找一种方法来放弃我的程序中的一个getter。我有一堆动态创建的文本字段:

fields = new TextField[105];
for (int i = 0; i < fields.length; i++) {
    fields[i] = new TextField();
}

下面是getter,我想在这里返回聚焦的TextField

public TextField getField() {
    return theFocusedTextField;
}

处理程序将接收聚焦字段并调用我的“model”-class中的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");
        }
    });

此刻,它接收到一个由我自己设置的预定义字段。检查答案的代码有效。感谢任何帮助我的人,如果我自己找到了一个方法,我一定会把它贴在这里。

共有1个答案

伏砚
2023-03-14

假设您已经定义了:

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 ;
        }
    });
}
 类似资料:
  • 我用JavaFX编写了一个应用程序,它只能用于键盘的箭头。所以我在现场的舞台上阻止了MouseeEvent,我“倾听”关键事件。我还关闭了所有节点的聚焦: 现在我有了一些文本字段、复选框和按钮。我想更改输入控件的状态(文本字段,复选框,…)编程:例如,我想输入文本字段以编程方式编辑内容。所以我的问题是:如何输入非焦点可遍历的文本字段?因为textfield。requestFocus();自从我将f

  • 我的代码中有JavaFX文本字段,希望在文本字段上为不同的事件添加一个操作。 今天,我只在文本字段中写入一些文本后按enter键时得到一个操作。如何添加处理tab press的操作?还有,当文本字段用鼠标点击失去焦点时,该如何反应? 当我读留档应该是可能的:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextFi

  • 我使用材质UI文本字段 我想实现一个自动对焦,我找不到一种方法通过设置而不是通过编程来实现。有什么帮助吗?

  • 我正在从事一个JavaFX 2.2项目,在使用TextField控件时遇到问题。我想限制用户可以在每个文本字段中输入的字符数。但是,我找不到属性或类似maxlength的东西。Swing中也存在同样的问题,通过这种方式解决了。JavaFX 2.2如何解决这个问题?

  • 我试图限制可以插入JavaFX-8文本字段的字符数:当达到限制时,调用endlinereach()方法。我想根据文本字段的大小(GUI上的可见部分)设置最大字符数。所以我使用的代码是 问题是textfield.getPrefClonCount()无法正常工作。此外,我无法以编程方式设置prefClonCount值,因为每次重新启动程序(而不是在执行期间)时,文本字段的宽度都会发生变化。文本字段是J

  • 我需要一些帮助。我有一个s的。 我想检查值是否发生了变化。如果是,我想知道它是哪个文本字段。我知道我可以使用侦听器来执行此操作,但这只适用于单个侦听器。 我希望它在数组上工作并确定哪个文本字段已更改。 提前感谢!