我需要显示一个带有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显示预期的下拉列表。
答案 0 :(得分:0)
使用javafx.scene.control.ChoiceBox而不是javafx.scene.control.ComboBox解决了这个问题,虽然我不知道为什么。