JavaFX - отменить выбор текста в TextField при открытии нового этапа - PullRequest
0 голосов
/ 13 сентября 2018

Я разработал простую форму с TextField и кнопкой.

При создании сцены со сценой, содержащей форму, TextField должен быть предварительно загружен символом. Проблема в том, что, когда форма появляется, символ выбирается, как показано на изображении .

Я пробовал textfield.deselect () или textfield.positionCaret (1) (или оба), но ничего не изменилось. Я не хочу удалять фокус на текстовом поле, но отмените выделение текста и переместите курсор в конце (чтобы пользователь что-нибудь написал, первый символ не был перезаписан).

Это код, который я написал:

try {
        Stage primaryStage = new Stage();
        FXMLLoader loader = new FXMLLoader();
        Pane root = loader.load(getClass().getResource("/resources/view/quick-search.fxml").openStream());
        QuickSearchCtrl quickSearchCtrl = (QuickSearchCtrl) loader.getController();
        quickSearchCtrl.text_tf.setText(text);
        quickSearchCtrl.text_tf.deselect();
        primaryStage.setTitle("");
        primaryStage.setScene(new Scene(root, 230, 54));
        primaryStage.show();
        primaryStage.setResizable(false);
    } catch (IOException e) {
        e.printStackTrace();
    }

1 Ответ

0 голосов
/ 13 сентября 2018

Это злой костыль, но эта работа.

quickSearchCtrl.text_tf.setText(text);
deselect(quickSearchCtrl.text_tf);

private void deselect(TextField textField) {
    Platform.runLater(() -> {
        if (textField.getText().length() > 0 &&
                textField.selectionProperty().get().getEnd() == 0) {
            deselect(textField);
        }else{
            textField.selectEnd();
            textField.deselect();
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...