我正在使用 Javafx v8.0.25-b18。
我出现的问题是动态组合框的下拉列表的大小不会改变,所以如果我最初在下拉列表中有两个项目,那么下拉列表大小将适合两个项目,但如果我现在用以下内容填充动态组合框三个项目,然后我在里面得到一个小滚动条!?,如果我删除一个项目 - 我将在组合框中有一个空白!?
我想在每次将值放入下拉列表时“重置”下拉列表大小,因此每次在运行时填充它时它都会是正确的大小。
为了进一步澄清,我添加了三张图片:
1. 第一个屏幕截图显示初始下拉大小为 2
- 第二个屏幕截图显示了相同的组合框,现在在运行时我添加了 2 个值,我希望它现在有一个大小为 4 的下拉列表,但下拉列表大小仍然为 2,并且只添加了不需要的滚动条
- 最后一个屏幕截图是当我删除项目并且组合框中仅保留一个项目时,我希望看到 1 个项目的下拉列表,但不幸的是我看到一个大小为 2 的下拉列表,因此是一个空白空间而不是第二个项目
我添加了简单的代码来创建这个场景,我要感谢 @Gikkman 帮助我走到这一步,代码实际上是他的!
public class Test extends Application {
private int index = 0;
@Override
public void start(Stage primaryStage) throws IOException {
VBox vbox = new VBox();
vbox.setSpacing(10);
vbox.setAlignment(Pos.CENTER);
final ComboBox<String> box = new ComboBox<>();
box.setPrefWidth(200);
box.setVisibleRowCount(10);
Button add = new Button("Add");
Button remove = new Button("Remove");
add.setOnAction( new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
box.getItems().add("Item " + index++);
box.getItems().add("Item " + index++);
}
});
remove.setOnAction( new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if( index > 0 )
box.getItems().remove(--index);
}
});
vbox.getChildren().addAll(add, remove, box);
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
尝试这个:
box.hide(); //before you set new visibleRowCount value
box.setVisibleRowCount(rows); // set new visibleRowCount value
box.show(); //after you set new visibleRowCount value
它适用于我的可编辑组合框,我认为它也适用于您的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)