我的JavaFX项目中有一个javafx.scene.control.ChoiceDialog
对象。对话框打开时,我要将焦点设置为基础ComboBox
。但是,我不知道如何获取基础的ComboBox
控件。对于TextInputDialog
,有一种称为getEditor()
的方法。有什么方法(除了以反射方式访问私有comboBox
成员以外)来获取基础的ComboBox
?
最佳答案
要将焦点设置为ComboBox
,可以使用肮脏的技巧,在显示后,它会触发updateGrid
的ChoiceDialog
:
ChoiceDialog<String> choiceDialog = new ChoiceDialog<>("test", getData());
choiceDialog.showingProperty().addListener((ov, b, b1) -> {
if (b1) {
choiceDialog.setContentText("");
}else {
choiceDialog.setContentText(null);
}
//or
if (b1) {
Node comboBox = choiceDialog.getDialogPane().lookup(".combo-box");
comboBox.requestFocus();
}
});