9

我使用 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 和 literPreis 是我的文本字段

4

2 回答 2

21

这个技巧将帮助你:

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();
                }
            }
        });
    }
});
于 2013-02-19T20:40:15.627 回答
2

这对我有用:

PathField.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
    if (isNowFocused) {
        Platform.runLater(() -> PathField.selectAll());
    }
});
于 2019-07-21T22:03:39.407 回答