我的JavaFX项目中有一个javafx.scene.control.ChoiceDialog对象。对话框打开时,我要将焦点设置为基础ComboBox。但是,我不知道如何获取基础的ComboBox控件。对于TextInputDialog,有一种称为getEditor()的方法。有什么方法(除了以反射方式访问私有comboBox成员以外)来获取基础的ComboBox

最佳答案

要将焦点设置为ComboBox,可以使用肮脏的技巧,在显示后,它会触发updateGridChoiceDialog

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();
    }
});

09-11 09:46