【问题标题】:JavaFX CSS: Custom FunctionsJavaFX CSS:自定义函数
【发布时间】:2023-03-14 14:07:01
【问题描述】:

我想知道是否有办法将自定义函数添加到 JavaFX CSS,我主要感兴趣的是创建一个函数来获取补色。

目前唯一的颜色转换函数是派生和梯形。

为此使用派生的问题是它只能调整亮度,而且是在一个方向上。

提前感谢您的帮助

JavaFX Color Reference

【问题讨论】:

标签: java css javafx


【解决方案1】:

您可以在主 CSS 中添加颜色列表:

Style.css

 /* Colors
    -------------- */
    *{
        -color-primary:#d8d8d8;
        -color-accent:#F44336;
        -color-secondary:#1E88E5;
        -color-dark-primary:#1d1d1d;
        -color-amber:#ffc400;
        -color-gray:#666666;
    }

并在任何地方使用它:

@import "../main/Styles.css";

.background {
    -fx-background-color: -color-amber;
}

【讨论】:

    【解决方案2】:

    让 JavaFX CSS 更有用的一种方法是将LESS 与 JavaFX 结合使用。

    您只需要一个jlessc 和一个小型实用程序类,以便在您为控件设置样式表时为您提供帮助。

    例如:

    myControl.getStylesheets().add(
        LessLoader.compile(getClass().getResource("styles.less")).toExternalForm());
    

    这将允许您使用 saturatelightendarkenfadein 等颜色函数以及 LESS 带来的许多其他好处。

    我在这里使用的LessLoader 类很简单:

    public class LessLoader {
    
      public static URL compile(URL url) {
        try {
          try (InputStream in = url.openStream()) {
            String data = new String(in.readAllBytes(), StandardCharsets.UTF_8);
    
            String compiledCSS = Less.compile(url, data, false, new ReaderFactory() {
              @Override
              public Reader create(URL url) throws IOException {
                return super.create(url);
              }
            });
    
            Path tempFile = Files.createTempFile(null, null);
            Files.write(tempFile, compiledCSS.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE);
    
            tempFile.toFile().deleteOnExit();
    
            return tempFile.toUri().toURL();
          }
        }
        catch(IOException e) {
          throw new IllegalStateException(e);
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      相关资源
      最近更新 更多