2017-12-04 6 views
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(); 

シーンから四角形を削除すると、コンボボックスにはドロップダウンリストが表示されます。

+0

あなた自身の解決策が満足できない場合は[MCVE]を投稿してください。 – user1803551

答えて

0

javafx.scene.control.ComboBoxの代わりにjavafx.scene.control.ChoiceBoxを使用すると、この問題は解決しますが、理由はわかりません。

関連する問題