2016-01-26 29 views
3

所以我有下面的代碼snipet,我想要應用於我的JavaFX應用程序中99%的標籤。但是,有時我不希望它被應用。不幸的是,每當我嘗試調用讓一個節點忽略一個CSS類條目

myFont.setFont(Font.loadFont(etc etc);

這是無法覆蓋在CSS文件中的標籤類。如何才能做到這一點?謝謝!

.label 
{ 
    -fx-font-size: 14pt; 
    -fx-font-family: "Segoe UI Semibold"; 
} 

回答

1

.label是建在被應用到所有Node小號Label類型的款式之一。您可以刪除任何樣式類是這樣的:

Label lbl = ... 
lbl.getStyleClass().remove("label"); 

不過我建議另一種方法,不涉及刪除樣式類的內置插件的特別之一。

因爲似乎只有一個選擇的幾個標籤,沒有這種風格,你可以將其覆蓋在這些標籤:

.label-override { 
    -fx-font-size: 10pt; 
    -fx-font-family: "Segoe UI Semibold"; 
} 

Label otherLbl = ... 
otherLabel.getStyleClass().add("label-override); 
+0

找到一個替代的解決方案,以及感謝你的解釋。我可以鍵入'myLabel.getStyleClass()。clear();'它會重置我Node上的任何CSS文檔。 – Hatefiend

+0

編輯了以前對替代解決方案的評論。謝謝您的幫助。 – Hatefiend

+1

@hotzst這是不正確的 - 「*因此你不能從特定標籤*中刪除該樣式」。更合適的陳述應該是 - 「*因此,你不應**從特定標籤中刪除該樣式*」 – ItachiUchiha

2

有不同的方法來做到這一點。很少有方法的描述如下:

  • 定義不同的風格類,而不是使用默認的.label,並用它在標籤上您的99%。

代碼:

mylabel.getStyleClass().add("my-label") 

CSS:

.my-label { 
    -fx-font-size: 14pt; 
    -fx-font-family: "Segoe UI Semibold"; 
} 
  • 刪除默認label樣式類和新的樣式類設置爲標籤的1%。這將從節點中刪除已存在的.label樣式類。這似乎是一個更簡單的方法,但如果我是你,我不會去這種方法,因爲我們默認的樣式,我們希望它們默認應用到各自的節點。

代碼:

mylabel.getStyleClass().setAll("my-label");