我设计了一个带有 TextField 和 Button 的简单表单。创建舞台时,场景包含表单,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 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
这是一个邪恶的拐杖,但这项工作。
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();
}
});
}
添加回答
举报
0/150
提交
取消