2015-08-27 76 views
0

在我的應用程序中,我有一個具有特定樣式的標籤,此標籤有一個工具提示。 現在我改變了我的代碼,以便我的標籤有一個類,並且我在css中定義了樣式。 (這完美的作品)javafx - 工具提示與標籤具有相同的樣式

但現在的提示具有相同的風格爲標籤(它有標準的JavaFX 8造型前)

CSS:

.my-Class { 
-fx-text-fill:lightblue; 
-fx-font-size: 11pt;   
-fx-font-weight:bold; 
-fx-font-style:italic; 
} 

那是怎樣的代碼我創建標籤

Label label= new Label("i"); 
label.getStyleClass().add("my-Class "); 
label.setTooltip(new Tooltip("xxx")); 

改變之前的CSS工具提示爲標準字體/大小/ ... 現在的字體是粗體和斜體(而不是藍色)

這是爲什麼?我怎麼能改回從前那樣(但使用CSS文件)

回答

1

雖然IMO它不提供明確的信息的方式,請this link關於CSS繼承:

CSS還提供了默認繼承的某些屬性,或者如果屬性值爲「inherit」,則繼承該屬性。如果值是繼承的,則它將從文檔樹中元素父級的計算值繼承。在JavaFX中,繼承是相似的,除了代替文檔樹中的元素,繼承發生在場景圖中的父節點。

因此,您的工具提示正在繼承其父級的一些CSS屬性。你怎麼知道它繼承的屬性是什麼?看看這些線(Java的8,不是一件容易的代碼!):

Label label= new Label("i"); 
label.getStyleClass().add("my-Class"); 
Tooltip tooltip = new Tooltip(「xxx」); 
label.setTooltip(tooltip); 

List<CssMetaData< ? extends Styleable, ? >> cssProperties = ex2.getCssMetaData().stream().filter(t -> t.getProperty().equals("-fx-font")).findFirst().get().getSubProperties(); 
boolean inherits = cssProperties.stream().filter(t -> t.getProperty().equals("-fx-font-style")).findFirst().get().isInherits(); // Returns true 

如果檢查cssProperties列出你應該能夠看到所有繼承相關字體屬性(繼承:真)。此列表應返回至少四種css樣式,其中包括-fx-font-style-fx-font-weight

總之,如果你希望你的提示有規律的樣式和大小,你必須添加到您的工具提示新的CSS樣式:

.my-Tooltip { 
-fx-font-size: 11pt;   
-fx-font-weight: normal; 
-fx-font-style: normal; 
} 

Otherwhise,它總是會繼承其父的風範。

+0

thx。這對我行得通 – griFlo