首页 > 解决方案 > 在 JavaFX 中更改窗口大小后组合框下拉宽度出现问题

问题描述

我正在开发一个 Java 应用程序,该应用程序在窗口大小更改后会更改组件大小,并且我遇到了 ComboBox 下拉菜单的问题。窗口大小更改后,首先扩展下拉列表不会改变它的宽度,我明白。当我第二次展开列表时,它运行良好,但仅当我使用以下代码时:

        comboBoxWindowSize.setCellFactory(new Callback<ListView<WindowSize>, ListCell<WindowSize>>() {
            @Override
            public ListCell<WindowSize> call(ListView<WindowSize> param) {
                ListCell cell = new ListCell<WindowSize>() {
                    @Override
                    public void updateItem(WindowSize windowSize, boolean empty) {
                        super.updateItem(windowSize, empty);
                        setPrefHeight(padH25);
                        getListView().setPrefWidth(padW150);
                        if (!empty) {
                            setText(windowSize.toString());
                        } else {
                            setText(null);
                        }
                    }
                };
                return cell;
            }
        });

当我不使用此代码时,宽度始终不正确。我希望下拉宽度等于 ComboBox 宽度。你会帮我解决这个问题吗?

标签: javajavafxcombobox

解决方案


好的,我找到了答案。这很丑陋,但它确实有效。就像我上面说的,它的大小仅在第一次扩展时是不正确的。所以我所要做的就是在我更改窗口大小后以编程方式展开和折叠它:

            comboBoxWindowSize.show();
            comboBoxWindowSize.hide();

就这样。


推荐阅读