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

时间:2013-02-19 19:00:26

标签: javafx-2 javafx

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

flaschenPreis und literPreis是我的文本域

2 个答案:

答案 0 :(得分:17)

这个技巧可以帮到你:

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

答案 1 :(得分:0)

这对我有用:

PathField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
        if (isNowFocused) {
            Platform.runLater(() -> PathField.selectAll());
        }
    });