簡體   English   中英

屬性選擇器如何在 JavaFX 中工作?

[英]How do Attribute Selectors work in JavaFX?

ĴAVAFXÇSS - [R eference,它清楚地表明

JavaFX 級聯樣式表 (CSS) 基於 W3C CSS 版本 2.1 [1],並在版本 3 [2] 的當前工作中添加了一些內容。

在 JCRG 中,他們經常直接鏈接到 W3C 的 CSS 參考指南,當他們談論選擇器時就是這種情況。

在 JCRG 中,他們提到了類型選擇器類選擇器ID 選擇器——他們甚至說它們不支持結構偽類——但沒有提到屬性選擇器

如果 JavaFX 支持它們,它們是如何工作的? JavaFX 認為什么是屬性? 我認為 CSS 引擎可能會查看 FXML 中的屬性,但並非所有場景圖都源自 FXML。

FXML 屬性只是在相應的對象上設置屬性。 本身沒有“屬性選擇器”,但是當且僅當設置了某些屬性時,某些節點才會設置偽類(這些記錄在您鏈接的參考指南中)。 所以底線是沒有直接等價的屬性選擇器,除非它們直接映射到偽類。

請注意,當然,如果您需要支持基於屬性的 CSS,您始終可以觀察屬性並設置/取消設置自定義偽類。 所以總是可以將屬性選擇器重鑄為偽類。

因此,例如,假設您想為具有"alignment=CENTER_RIGHT"屬性的文本字段設置不同的樣式。 你可以做

TextField textField = new TextField();
PseudoClass rightAligned = PseudoClass.getPseudoClass("right-aligned");
textField.alignmentProperty().addListener((obs, oldAlignment, newAlignment) -> 
    textField.pseudoClassStateChanged(rightAligned, newAlignment == Pos.CENTER_RIGHT));

然后在你的 CSS 中你只需要

.text-field:right-aligned {
    /* style rules */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM