我有一个小问题:我的文本字段一直在选择自己,例如,如果我在应用程序之间使用 alt-tab。
对于我的应用程序,不需要也不会使用文本选择 - 所以我想禁止这种烦人的行为。实际上,只需将选择颜色设置为透明或白色即可。
有没有办法做到这一点?
我有一个小问题:我的文本字段一直在选择自己,例如,如果我在应用程序之间使用 alt-tab。
对于我的应用程序,不需要也不会使用文本选择 - 所以我想禁止这种烦人的行为。实际上,只需将选择颜色设置为透明或白色即可。
有没有办法做到这一点?
以下css为我解决了这个问题:
-fx-highlight-fill: null;
-fx-highlight-text-fill: null;
您可以禁用关键事件的文本选择:
myTextField.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent inputevent) {
if (!myTextField.getSelectedText().isEmpty()) {
myTextField.deselect();
}
}
});
对于鼠标事件,您还可以使用:
myTextField.addEventFilter(MouseEvent.MOUSE_DRAGGED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (!myTextField.getSelectedText().isEmpty()) {
myTextField.deselect();
}
}
});
超级迟到的答案,但我有一个更好的解决方案。
与其禁用选定文本的样式或管理鼠标事件,不如直接管理 selectedTextProperty()。
该解决方案的优点是:
编码...
textField.selectedTextProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue.isEmpty()) textField.deselect();
});