我正在研究通过 CSS 自定义控件,但我已经走得很远了。所以我可以完全自定义我的滚动条,例如将轨道的背景设置为透明等等。但我坚持使用 ScrollBarSkin(通过 ScenicViewer 进行调查)。这个皮肤似乎有一个默认的背景颜色(渐变)和一个我无法修改的边框。所以我的问题是,我如何访问例如 TableCellSkin 或 ScrollBarSkin,以通过 CSS 修改背景颜色和插图?
编辑:我正在使用 jdk7
edit2:我在 caspian.css 中为 ScrollPaneSkin 找到了一些语法。我对滚动条和表格单元尝试了相同的操作:
ScrollBarSkin>* {
-fx-base: transparent;
-fx-border-color: #00ff00;
-fx-background-color: #0000ff;
}
但没有运气。
根据jewelsea的回答找到了解决方案(谢谢队友!)
我创建了一个扩展 ScrollBarSkin 的新类,并覆盖了 getSkinnable()。这看起来像这样:
public class MyScrollBarSkin extends ScrollBarSkin{
public MyScrollBarSkin(ScrollBar scrollBar) {
super(scrollBar);
}
@Override
public Insets getInsets() {
// TODO Auto-generated method stub
return super.getInsets();
}
@Override
public ScrollBar getSkinnable() {
ScrollBar curr = super.getSkinnable();
curr.getSkin().getNode().setStyle("-fx-background-color: transparent;");
return curr;
}
}
在相应的 css 中,我将这个皮肤称为 Jewelsea 提到的。瞧!
还有一个小问题:为什么我不能通过 css 直接访问这个组件?