小编ele*_*gin的帖子

JavaFX CSS根属性引用未解析

JavaFX文档似乎暗示如果在CSS根类中定义了属性,则可以由场景中的任何对象引用它:

.root样式类包括可由其他样式用于在UI中提供一致性的属性.例如,属性-fx-focused-base在.root样式中定义.其他UI控件的样式使用此属性作为控件具有焦点时的颜色.

例如,在以下简单应用程序中:

public class Main extends Application {

@Override
public void start(Stage stage) throws Exception {
    AnchorPane pane = new AnchorPane();
    Scene s = new Scene(pane, 800, 600);

    pane.getStylesheets().add("test.css");
    pane.getStyleClass().add("test");

    System.out.println("Root pane style classes:");
    for (String clazz : pane.getStyleClass())
        System.out.println(clazz);

    stage.setScene(s);
    stage.show();
}

public static void main(String[] args) {
    Application.launch();
}
}
Run Code Online (Sandbox Code Playgroud)

使用以下样式表test.css:

.test {
-fx-background-color: -fx-base;
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

Root pane style classes:
root
test
WARNING: com.sun.javafx.css.StyleHelper calculateValue Could not resolve '-fx-base' while resolving lookups for '-fx-background-color' from …
Run Code Online (Sandbox Code Playgroud)

css javafx javafx-2

3
推荐指数
1
解决办法
3734
查看次数

JavaFX中属性的延迟初始化

似乎懒惰的属性初始化是JavaFX中常见的设计模式.例如,OpenJFX Labeled实现包含以下代码段:

public final StringProperty textProperty() {
    if (text == null) {
        text = new SimpleStringProperty(this, "text", "");
     }
     return text;
}
Run Code Online (Sandbox Code Playgroud)

鉴于可以想象从JavaFX UI线程以及其他潜在客户端线程访问该属性,并且此实现不是线程安全的,这似乎是一个错误.鉴于模式的使用频率,这是一个非常严重的问题,或者访问控件上的属性并不是为了线程安全(我误解了JavaFX并发策略).

任何人都可以解释不使懒惰初始化线程安全的理由吗?

java javafx javafx-2

1
推荐指数
1
解决办法
537
查看次数

标签 统计

javafx ×2

javafx-2 ×2

css ×1

java ×1