第一次单击 JavaFX 时突出显示 TextField 中的所有文本
Highlight all text in TextField upon FIRST click JavaFX
如何使我的文本字段 (JavaFX) 与上面 Google Chrome 的搜索栏完全相同。这意味着,如果我点击一次,它会标记所有内容,但如果我再次点击,我就在我点击的地方。
示例:
开始:
第一次点击:
再次点击:
编辑
这是我试过的:
textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
textField.selectAll();
}
if (wasFocused) {
textField.deselect();
}
});
但是使用这段代码,当我第一次点击时,所有内容都被选中并立即再次取消选择。
我会使用 MouseEvent
和 EventFilter
:
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();
}
});
如何使我的文本字段 (JavaFX) 与上面 Google Chrome 的搜索栏完全相同。这意味着,如果我点击一次,它会标记所有内容,但如果我再次点击,我就在我点击的地方。
示例:
开始:
第一次点击:
再次点击:
编辑
这是我试过的:
textField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
textField.selectAll();
}
if (wasFocused) {
textField.deselect();
}
});
但是使用这段代码,当我第一次点击时,所有内容都被选中并立即再次取消选择。
我会使用 MouseEvent
和 EventFilter
:
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();
}
});