在按ESC时如何取消选择所有内容/使其失去焦点

时间:2019-01-23 20:00:31

标签: javafx

我有以下迷你应用程序:

public class TestApp extends Application {

    public static void main(final String[] args) {
    launch(args);
    }

    private final AtomicLong counter = new AtomicLong();

    @Override
    public void start(final Stage primaryStage) {

    final VBox root = new VBox(5);
    root.setPadding(new Insets(10));
    root.setAlignment(Pos.CENTER);

    final TableView<String> tableView = new TableView<>();
    final TableColumn<String, String> column = new TableColumn<>("Text");
    column.setCellValueFactory(f -> new SimpleStringProperty(f.getValue()));

    tableView.getColumns().add(column);

    // Add some sample items to our TableView
    for (int i = 0; i < 100; i++) {
        tableView.getItems().add("Item #" + counter.incrementAndGet());
    }

    final Button button = new Button("Add items");

    final TextArea t1 = new TextArea();

    button.setOnAction(e -> {
        final long oldElement = counter.get();
        // Add more elements
        for (int i = 0; i < 10; i++) {
        tableView.getItems().add("Item #" + counter.incrementAndGet());
        }
        tableView.scrollTo("Item #" + oldElement);
    });

    root.getChildren().add(button);
    root.getChildren().add(t1);
    root.getChildren().add(tableView);

    // Show the Stage
    primaryStage.setWidth(300);
    primaryStage.setHeight(300);
    primaryStage.setScene(new Scene(root));
    primaryStage.show();
    }
}

启动时,按钮具有焦点。如果我单击TextArea,它将获得焦点。

除了按下按钮(现在将触发一个动作,如果我只想摆脱焦点,这是不需要的)之外,现在没有办法再次使TextArea失去焦点。

如何释放所有焦点并取消选择所有内容,例如当我使用ESC时?

1 个答案:

答案 0 :(得分:0)

我不知道这是否完全满足您的要求,但是您可以创建一个<div class="locButton"> <h5>Name</h5> <p>Address1</p> <p></p><!----> <p>Phone</p> </div> 变量来保持 ESCAPE 的状态。您还可以使用<p>,让根节点在失去焦点时可以重新获得焦点。

boolean