CSS   发布时间:2022-04-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了css – 在JavaFX 8中,我可以从String中提供样式表吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以将整个样式表包装在一个字符串中并将其应用于某个节点?
用例是为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; }");

解决方法

我通过定义新的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,所以我不需要记住多个字符串.
似乎Stream只打开一次,但我不知道在所有情况下是否都适用.

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

这种方法的功劳归于Jasper Potts(see this example)

大佬总结

以上是大佬教程为你收集整理的css – 在JavaFX 8中,我可以从String中提供样式表吗?全部内容,希望文章能够帮你解决css – 在JavaFX 8中,我可以从String中提供样式表吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。