gpt4 book ai didi

JavaFX TextField cancelEdit 没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 06:53:00 25 4
gpt4 key购买 nike

我有一个 TextField当我按下 Esc 时,我希望该字段的内容恢复到它们以前的值,这在大多数系统上都是预期的行为(我不知道为什么 JavaFX 默认情况下不这样做)。

为此我尝试使用 TextField.cancelEdit()但似乎这无济于事。

这是一个SSCCE

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.stage.Stage;

public class UiTest2Controller extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage aPrimaryStage) throws Exception {
final TextField field = new TextField();
field.setOnAction(aEvent -> {
System.out.println("Action");
});
field.setOnKeyPressed(aEvent -> {
if (aEvent.getCode() == KeyCode.ESCAPE) {
System.out.println("Escape");
field.cancelEdit();
field.getParent().requestFocus();
}
});
field.setPromptText("Hello World...");

aPrimaryStage.setScene(new Scene(new Group(field)));
aPrimaryStage.show();
}
}

重现步骤:

  1. 在文本字段中输入内容
  2. Esc

预期行为:该字段返回到之前的值(第一次为空)并且焦点丢失。

实际行为:字段在当时保留其值并且焦点丢失。

最佳答案

我不确定具体细节,但如果 TextField 分配了 TextFormatter,它似乎会按预期工作:

field.setTextFormatter(new TextFormatter<>(TextFormatter.IDENTITY_STRING_CONVERTER));

关于JavaFX TextField cancelEdit 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059160/

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