定制控制&不透明的弹出窗口

时间:2013-01-30 18:00:16

标签: java css custom-controls javafx-2 javafx

我正在编写一个包含自定义控件的JavaFX库。我为此控件创建了一个自定义外观,我在其中布局TextField和Button。 单击该按钮时,应打开一个弹出窗口。

我遇到的麻烦是Popup是透明的。我怎么能让它变得不透明?我尝试在CSS中配置背景但没有成功。

相关代码位于此自定义控件的Skin实现中。 CSS由自定义控件的getUserAgentStylesheet()方法引用。 自定义控件具有styleClass“custom-control”。

皮肤基本上说:

  • 将cutom控件渲染为TextField和Button
  • 如果此按钮(部分皮肤)被按下:弹出一个带有另一个自定义的窗口 控制(有自己的皮肤等)。

以下是相关代码:

 public class SomeControlSkin implements Skin<SomeControl> {

    private SomeControl control;

    private OtherControl otherControl = new OtherControl();
    private Popup popup = new Popup();

    public SomeControlSkin(SomeControl someControl){
      this.someControl = someControl;
      otherControl.fooProperty().bind(someControl.fooProperty());

      ...

      popupControl.getContent().add(otherControl);   

      ...
   }

...

}

.some-control { 
    -fx-skin: "somePackage.SomeControlSkin";
}

.some-control .popup{ 
    -fx-background-color: yellow;
}

.some-control .other-control{ 
    -fx-background-color: yellow;
}

我也尝试过使用PopupControl,但它也没有用。

注意:这是一个交叉帖子:

https://forums.oracle.com/forums/thread.jspa?messageID=10819020

修改

我设法向前迈了一小步。以下内容将填充Popup:

popupControl.getScene().setFill(Color.YELLOW);

但我怎么能用CSS做到这一点?

我甚至尝试过:

.some-control { 
    -fx-skin: "somePackage.SomeControlSkin";
    -fx-background-color: black;
    -fx-background-insets: 0;
    -fx-fill: black;
}

.other-control { 
    -fx-skin: "somePackage.OtherControlSkin";
    -fx-background-color: black;
    -fx-background-insets: 0;
    -fx-fill: black;
}

但无论是将控件添加到Popup还是主场景,它都没有改变背景!? (我不确定填充或背景是否可以完成这个技巧,但我不确定是否必须设置插入物以及值,但是)。

我还尝试添加一个styleClass:

   popupControl.getContent().add(otherControl);
   otherControl.getStyleClass().add("other-control-popup");

.other-control-popup {
    -fx-background-color: black;
    -fx-background-insets: 0;
    -fx-fill: black;
}

但这也不起作用。

0 个答案:

没有答案