0
JavaFXノードのバックグラウンドとしてInnerShadowエフェクトを持つ四角形を表示する必要があります。各ノードのサイズを変更する必要があります。私はInnerShadowをその子の1つとして持つ矩形と、このクラスの具体的な実装が他の子として提供するRegionを持つRegionを持つ抽象基本クラスでこれを実装しています。JavaFX Rectangleはコンボボックスのドロップダウン表示を停止します
子領域に1つまたは複数のComboBoxを追加すると問題が発生します。 ComboBoxをクリックしても効果はありません。つまり、アイテムのドロップダウンリストは表示されません。
ComboBoxと重複しないように、Rectangleを小さく(10x10ピクセル)しようとしました。これは何の違いもありません。
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();
シーンから四角形を削除すると、コンボボックスにはドロップダウンリストが表示されます。
あなた自身の解決策が満足できない場合は[MCVE]を投稿してください。 – user1803551