【发布时间】:2016-06-27 16:44:12
【问题描述】:
我有一个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();
}
}
重现步骤:
- 在文本字段中输入内容
- 按 Esc
预期行为:该字段返回之前的值(第一次为空)并且焦点丢失。
实际行为: 字段在当时保持其价值,但失去焦点。
【问题讨论】:
标签: java user-interface javafx