JavaFX Rectangle停止ComboBox显示下拉列表

时间:2017-12-04 16:11:20

标签: javafx combobox resize

我需要显示一个带有InnerShadow效果的Rectangle作为我的JavaFX节点的背景。每个节点都需要可调整大小。我正在使用一个带有Region的抽象基类来实现它,该Region具有一个Rectangle,其中一个InnerShadow作为其子项之一,另一个区域由该类的具体实现提供,作为其他子项。

当我向子区域添加一个或多个ComboBox时,会出现问题。单击组合框无效,即它们不显示项目的下拉列表。

我尝试使Rectangle更小(即10x10像素),使其不与ComboBox重叠。这没什么区别。

private void createNodeWithBackground() {
    pane = new Region() {
        @Override
        public void resize(double width, double height) {
            super.resize(width, height);

            backing = new Rectangle(width, height);
            InnerShadow shadeEffect = new InnerShadow();
            shadeEffect.setWidth(w/2);
            shadeEffect.setHeight(h/2);
            shadeEffect.setInput(new ColorAdjust(-0.1, 0.2, -0.1, 0.1));
            backing.setEffect(shadeEffect);

            getChildren().clear();
            getChildren().addAll(backing, getBodyNode());
        }
    };
    getChildren().add(pane);
}

/**
 * The concrete class provides a node to be displayed on top of the
 * Rectangle with the InnerShadow.
 * This might be a VBox containing a ComboBox and other nodes.
 */
protected abstract Region getBodyNode();

从场景中删除矩形会导致ComboBox显示预期的下拉列表。

1 个答案:

答案 0 :(得分:0)

使用javafx.scene.control.ChoiceBox而不是javafx.scene.control.ComboBox解决了这个问题,虽然我不知道为什么。