【发布时间】:2019-01-23 20:00:31
【问题描述】:
我有以下迷你应用:
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 时?
【问题讨论】:
-
您只需将焦点移动到另一个节点:
node.requestFocus()。总有一些事情需要关注。
标签: javafx