【问题标题】:Is it possible to forbid selection in TextField?是否可以在 TextField 中禁止选择?
【发布时间】:2012-08-13 06:19:00
【问题描述】:

我有一个小问题:我的文本字段不断选择自己,例如,如果我在应用程序之间使用 alt-tab 键。

对于我的应用程序,不需要也不会使用文本选择 - 所以我想禁止这种烦人的行为。实际上,只需将选择颜色设置为透明或白色即可。

有没有办法做到这一点?

【问题讨论】:

    标签: javafx-2


    【解决方案1】:

    以下 css 为我解决了这个问题:

    -fx-highlight-fill: null;
    -fx-highlight-text-fill: null;
    

    【讨论】:

      【解决方案2】:

      您可以禁用关键事件的文本选择:

      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();
              }
          }
      });
      

      【讨论】:

        【解决方案3】:

        回答太晚了,但我有更好的解决方案。
        与其禁用选定文本的样式或管理鼠标事件,不如直接管理 selectedTextProperty()。
        这种解决方案的优点是:

        • 选择属性将始终为空选择
        • 还涵盖了双击,不仅是鼠标拖动事件

        代码...

            textField.selectedTextProperty().addListener((observable, oldValue, newValue) -> {
                if (!newValue.isEmpty()) textField.deselect();
            });
        

        【讨论】:

          猜你喜欢
          • 2023-01-18
          • 1970-01-01
          • 2014-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-22
          • 1970-01-01
          相关资源
          最近更新 更多