我可以在JavaFX 8中从字符串提供样式表吗?

ZioByte

是否可以将整个样式表包装在字符串中并将其应用于特定节点?用例是为PseudoClass添加特定的(不可改变的)行为。我知道我可以使用pane.getStylesheets().add(getClass().getResource("mycss.css").toExternalForm());,但是我想知道是否有某种方法可以直接将其嵌入到源代码中。大致情况:

pane.getStylesheets().add(
    ".button:ok { -fx-background-color: green; }\n"+
    ".button:ko { -fx-background-color: red; }");
ZioByte

我通过定义新的URL连接找到了一种方法:

private String css;

public void initialize() {
    ...
    // to be done only once.
    URL.setURLStreamHandlerFactory(new StringURLStreamHandlerFactory());
    ...
}

private void updateCss(Node node) {
    // can be done multiple times.
    css = createCSS();
    node.getStylesheets().setAll("internal:"+System.nanoTime()+"stylesheet.css");
}

private class StringURLConnection extends URLConnection {
    public StringURLConnection(URL url){
        super(url);
    }

    @Override public void connect() throws IOException {}

    @Override public InputStream getInputStream() throws IOException {
        return new StringBufferInputStream(css);
    }
}

private class StringURLStreamHandlerFactory implements URLStreamHandlerFactory {
    URLStreamHandler streamHandler = new URLStreamHandler(){
        @Override protected URLConnection openConnection(URL url) throws IOException {
            if (url.toString().toLowerCase().endsWith(".css")) {
                return new StringURLConnection(url);
            }
            throw new FileNotFoundException();
        }
    };
    @Override public URLStreamHandler createURLStreamHandler(String protocol) {
        if ("internal".equals(protocol)) {
            return streamHandler;
        }
        return null;
    }
}

显然,协议“内部”可以是任何(非冲突的)格式正确的字符串,并且(在此简单示例中)文件路径被强制忽略。

我使用它来设置全局.css,因此不需要记住多个字符串。似乎流只打开了一次,但是我不知道这在所有情况下是否都成立。

随意根据需要使代码复杂化;)

这种方法的贡献归功于Jasper Potts(请参见本示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以以编程方式遍历CSS样式表吗?

来自分类Dev

我可以在 Excel 工作表中为饼图颜色提供 RGB 十六进制字符串而不使用代码吗?

来自分类Dev

我可以在JFrame中嵌入JavaFX Application类吗?

来自分类Dev

插件样式表用 !important 覆盖了我自己的样式表——我可以更改它们的加载顺序吗?

来自分类Dev

我可以只为Oracle 10G中的表输入某些特定的字符串吗?

来自分类Dev

我可以在Node中执行字符串命令吗?

来自分类Dev

我可以在protobuf中定义常量字符串吗?

来自分类Dev

我可以从字符串中获取列名吗?

来自分类Dev

我可以在python函数中搜索字符串吗?

来自分类Dev

我可以在格式字符串中添加变量吗?

来自分类Dev

JavaFX:我可以访问它包含的节点吗?

来自分类Dev

JavaFX:我可以访问它包含的节点吗?

来自分类Dev

没有启动功能,我可以构建javafx吗?

来自分类Dev

我可以在 Siri 快捷方式中为建议的调用短语提供动态字符串吗?

来自分类Dev

我可以在Android上的javafx中显示Google adwords(AdView)

来自分类Dev

我可以在Android上的javafx中显示Google adwords(AdView)

来自分类Dev

我可以将重复的字符串存储在字符串数组中吗?

来自分类Dev

DataTables引导网格宽度。我们可以内联样式表吗?

来自分类Dev

我可以从样式表 (qss) 更改自定义动态属性吗?

来自分类Dev

您可以从自己的文件中将图像添加到内部CSS样式表中吗?

来自分类Dev

您可以从自己的文件中将图像添加到内部CSS样式表中吗?

来自分类Dev

我的自定义样式表不会覆盖foundation.css样式表吗?

来自分类Dev

我的自定义样式表不会覆盖foundation.css样式表吗?

来自分类Dev

我可以给出一个中间字符串来从 mysql 表中获取哪个值在中间有那个字符串吗?

来自分类Dev

如果字符串中包含空格,我仍然可以在字符串上使用tsort吗?

来自分类Dev

'\'可以在Python字符串中吗?

来自分类Dev

XML可以与CSS样式表进行交互吗?

来自分类Dev

您可以使用detectmobilebrowser链接样式表吗?

来自分类Dev

JavaFX加载样式表

Related 相关文章

  1. 1

    我可以以编程方式遍历CSS样式表吗?

  2. 2

    我可以在 Excel 工作表中为饼图颜色提供 RGB 十六进制字符串而不使用代码吗?

  3. 3

    我可以在JFrame中嵌入JavaFX Application类吗?

  4. 4

    插件样式表用 !important 覆盖了我自己的样式表——我可以更改它们的加载顺序吗?

  5. 5

    我可以只为Oracle 10G中的表输入某些特定的字符串吗?

  6. 6

    我可以在Node中执行字符串命令吗?

  7. 7

    我可以在protobuf中定义常量字符串吗?

  8. 8

    我可以从字符串中获取列名吗?

  9. 9

    我可以在python函数中搜索字符串吗?

  10. 10

    我可以在格式字符串中添加变量吗?

  11. 11

    JavaFX:我可以访问它包含的节点吗?

  12. 12

    JavaFX:我可以访问它包含的节点吗?

  13. 13

    没有启动功能,我可以构建javafx吗?

  14. 14

    我可以在 Siri 快捷方式中为建议的调用短语提供动态字符串吗?

  15. 15

    我可以在Android上的javafx中显示Google adwords(AdView)

  16. 16

    我可以在Android上的javafx中显示Google adwords(AdView)

  17. 17

    我可以将重复的字符串存储在字符串数组中吗?

  18. 18

    DataTables引导网格宽度。我们可以内联样式表吗?

  19. 19

    我可以从样式表 (qss) 更改自定义动态属性吗?

  20. 20

    您可以从自己的文件中将图像添加到内部CSS样式表中吗?

  21. 21

    您可以从自己的文件中将图像添加到内部CSS样式表中吗?

  22. 22

    我的自定义样式表不会覆盖foundation.css样式表吗?

  23. 23

    我的自定义样式表不会覆盖foundation.css样式表吗?

  24. 24

    我可以给出一个中间字符串来从 mysql 表中获取哪个值在中间有那个字符串吗?

  25. 25

    如果字符串中包含空格,我仍然可以在字符串上使用tsort吗?

  26. 26

    '\'可以在Python字符串中吗?

  27. 27

    XML可以与CSS样式表进行交互吗?

  28. 28

    您可以使用detectmobilebrowser链接样式表吗?

  29. 29

    JavaFX加载样式表

热门标签

归档