JavaFx:方法selectAll()只是通过键盘焦点工作

Son*_*nja 8 javafx javafx-2

我使用selectionAll()来选择文本字段中的整个文本,但它只是在焦点来自键盘(如Tab)时才有效.

如果我在文本字段中单击鼠标,它会在很短的时间内选择文本.但它必须像键盘的焦点一样工作.

 flaschenPreis.focusedProperty().addListener(new ChangeListener<Boolean>() {
        public void changed(ObservableValue ov, Boolean t, Boolean t1) {


            if ( flaschenPreis.isFocused() && 
                    !flaschenPreis.getText().isEmpty()) {
                flaschenPreis.selectAll();
            }              
        }
    });


    literPreis.focusedProperty().addListener(new ChangeListener() {
        public void changed(ObservableValue ov, Object t, Object t1) {

            if (literPreis.isFocused() && 
                    !literPreis.getText().isEmpty()) {
                literPreis.selectAll();
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

flaschenPreis和升普雷斯是我的文本领域

Ale*_*rov 18

这个技巧将帮助你:

    final TextField tf = new TextField("Text");
    tf.focusedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue ov, Boolean t, Boolean t1) {

            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    if (tf.isFocused() && !tf.getText().isEmpty()) {
                        tf.selectAll();
                    }
                }
            });
        }
    });
Run Code Online (Sandbox Code Playgroud)