【发布时间】:2012-08-13 06:19:00
【问题描述】:
我有一个小问题:我的文本字段不断选择自己,例如,如果我在应用程序之间使用 alt-tab 键。
对于我的应用程序,不需要也不会使用文本选择 - 所以我想禁止这种烦人的行为。实际上,只需将选择颜色设置为透明或白色即可。
有没有办法做到这一点?
【问题讨论】:
标签: javafx-2
我有一个小问题:我的文本字段不断选择自己,例如,如果我在应用程序之间使用 alt-tab 键。
对于我的应用程序,不需要也不会使用文本选择 - 所以我想禁止这种烦人的行为。实际上,只需将选择颜色设置为透明或白色即可。
有没有办法做到这一点?
【问题讨论】:
标签: javafx-2
以下 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();
});
【讨论】: