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 und 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 に答える