gpt4 book ai didi

css - JavaFX 2.2 : Modifying the skin style via css

转载 作者:行者123 更新时间:2023-11-28 11:11:34 25 4
gpt4 key购买 nike

我正在深入研究如何通过 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 直接访问这个组件?

最佳答案

ScrollBarSkin 是一个类,表示用于呈现 ScrollBar 的外观。以下是默认 JavaFX 样式表的摘录:

.scroll-bar {
-fx-skin: "com.sun.javafx.scene.control.skin.ScrollBarSkin";
}

这里是 ScrollBarSkin.java 的链接在 JavaFX 8 源存储库中。请注意,它是一个 com.sun 类,因此它不是公共(public) API 的一部分,并且可能会在次要 JavaFX 版本之间消失或更改 API,恕不另行通知。

您可以通过用户样式表中的以下 css 使用您自己的皮肤覆盖默认皮肤:

.scroll-bar {
-fx-skin: "com.mycompany.control.skin.CustomScrollBarSkin";
}

我只是把名字和路径弄好了,你可以随便用。

皮肤允许的是对控件外观的编程控制(即它只是偶然与 css 相关,因为 css 是在控件上设置皮肤的一种方式)。

Customizing Skins is documented (在某种程度上)在 OpenJFX wiki 中。

皮肤自定义依赖于一个名为 SkinBase 的新 JavaFX 8 类,它构成了 javafx.scene.control 公共(public) API 的一部分。

不建议在低于 Java 8 的版本中自定义皮肤,因为那样您将使用旧的、未记录和不受支持的私有(private) API,这些 API 将不适用于 Java 8 及更高版本。在 Java 8 中自定义皮肤很好,因为它依赖于公共(public) API。

根据您的问题,我很确定这并不是您真正要找的东西,但它是您问题的答案(至少在我看来是这样)。

关于css - JavaFX 2.2 : Modifying the skin style via css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com