第一次单击JavaFX时突出显示TextField中的所有文本
如何使我的文本字段JavaFX与上面Google Chrome的搜索栏完全相同。这意味着,如果我点击一次,它会标记所有内容,但如果我再次点击,我就在我点击的地方 例如: 开始: 第一次点击: 再次单击: 编辑 这就是我所尝试的:第一次单击JavaFX时突出显示TextField中的所有文本,java,javafx,textfield,highlight,Java,Javafx,Textfield,Highlight,如何使我的文本字段JavaFX与上面Google Chrome的搜索栏完全相同。这意味着,如果我点击一次,它会标记所有内容,但如果我再次点击,我就在我点击的地方 例如: 开始: 第一次点击: 再次单击: 编辑 这就是我所尝试的: textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> { if (isNowFocused) {
textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
textField.selectAll();
}
if (wasFocused) {
textField.deselect();
}
});
但有了这段代码,当我第一次单击时,所有内容都会被选中,并立即被取消选中。我会使用MouseeEvent和EventFilter:
您是否尝试将侦听器添加到focused属性,并在获得焦点时选择所有文本?如果不行,试试这个或类似的方法,如果不行,就发一个帖子。这能回答你的问题吗@codeflush.dev不,它没有回答我的问题。我猜默认行为发生在您添加的行为之后,这很奇怪。您可能可以在Platform.runLater中包装对selectAll的调用,但这不是很令人满意。@Gregor是的,我希望如此。但这是一个相当可怕的黑客。
TextField textField = new TextField("This is a test");
textField.addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
if (textField.getSelectedText().equals(textField.getText())) {
textField.deselect();
} else if (textField.getSelectedText().isEmpty()) {
textField.selectAll();
e.consume();
}
});