作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 JavaFX 项目中有一个 javafx.scene.control.ChoiceDialog
对象。当对话框打开时,我想将焦点设置到底层的ComboBox
。但是,我不知道如何获取底层的 ComboBox 控件。对于 TextInputDialog
,有一个名为 getEditor()
的方法。有没有什么方法(除了反射性访问私有(private) comboBox
成员之外)来获取底层 ComboBox
?
最佳答案
要将焦点设置到 ComboBox
,您可以使用肮脏的 hack,它会在显示 ChoiceDialog
后触发 updateGrid
:
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();
}
});
<小时/>
使用样式类获取 ComboBox
实例对于覆盖默认键盘导航非常有用:
final var options = (ComboBox) getDialogPane().lookup( ".combo-box" );
options.setOnKeyPressed( ( event ) -> {
// When the user presses the down arrow, open the drop-down. This prevents
// navigating to the cancel button.
if( event.getCode() == KeyCode.DOWN && !options.isShowing() ) {
options.show();
event.consume();
}
} );
当上述更改到位时,按向下箭头键将打开组合框实例,而不是导航到“取消”按钮。
关于JavaFX 从 ChoiceDialog 获取 ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37279640/
与预期相反,ChoiceDialog 中按钮的默认顺序是左侧的“取消”和右侧的“确定”。 在这种方法中,我创建了一个对话框,其中列出了牛的性别(奶牛、小母牛、阉牛等)。使用默认对话框一切正常,除了按钮
我的 JavaFX 项目中有一个 javafx.scene.control.ChoiceDialog 对象。当对话框打开时,我想将焦点设置到底层的ComboBox。但是,我不知道如何获取底层的 Com
我是一名优秀的程序员,十分优秀!