フランシスM.:
私は、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();
}
gearquicker:
これは、悪の松葉杖が、この作品です。
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();
}
});
}