我在写包含自定义控制一个JavaFX库。 我已经创建了这种控制,我布置一个TextField和一个按钮自定义皮肤。 当按钮被点击一个弹出窗口应该打开。
我有麻烦的是,弹出是透明的。 我怎样才能使它不透明? 我试图配置背景的CSS,但没有成功。
相关的代码是这种自定义控件的肌肤内实行。 的CSS由自定义控制的getUserAgentStylesheet()方法被引用。 定制控件具有的styleClass“自定义控制”。
基本上,皮肤说:
- 使对自定义控制,一个TextField和一个按钮
- 如果此按钮(皮肤的一部分)被压:弹出另一个自定义控件的窗口(它有它自己的皮肤等)
下面是相关的代码:
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
编辑:
我设法得到进一步的一小步。 下面将填补弹出窗口:
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;
}
但它并没有改变的背景不管我加入了控制到一个弹出窗口或主场景!? (我不知道,如果填充或背景应该做的伎俩,我不知道如果我必须设置插图和什么样的价值,虽然)。
我也尝试添加一个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;
}
但是,这也不能工作。