簡體   English   中英

ScalaFX / JavaFX樣式表未完全委派

[英]ScalaFX/JavaFX Stylesheet is not delegated completely

因此,我正在嘗試向場景中添加樣式表。 一切正常,直到我進入場景的第二層。 我有以下style.css:

.label: {
    -fx-font: 16px "Serif";
    -fx-padding: 5;
}

.root {
    -fx-background: cornflowerblue;
    -fx-fill: orchid;
}

我設法通過以下代碼將其附加到場景中:

private val mainLayout = new BorderPane() {...} // stylesheet missing
private val baseLayout = new StackPane() { // root element, has stylesheet
  children.add(mainLayout)
  ...
}
private val scene: Scene = new Scene(baseLayout) {
  stylesheets.add("style.css") // stylesheet works, but I can only style root
}

根樣式也可以,但是如果我在調試器中單擊各層,則樣式表在根元素之后消失。 我的根是StackPane ,其中包含BorderPane BorderPane已經不包含給定的樣式表。

我想念什么? 以后添加元素時,樣式表是否不委托? 我現在不使用場景生成器,因為我在scala中存在一些宏擴展的依賴問題。

提前致謝


編輯

解決問題:我的樣式表具有樣式根和標簽。 我創建場景:

var label: Label = new Label()
label.setText("Hello World!")
private val root = new StackPane() {
  children.add(label)
}
private val scene: Scene = new Scene(root) {
  stylesheets.add("style.css")
}

根樣式起作用,標簽保持不變。 在此處輸入圖片說明

我正在使用scalafx庫,因此我所有的fx類型都來自該庫( scalafx.scene.layout.Labelscalafx.scene.Scene等)

好的。 抱歉。 我發現了錯誤:我在CSS的label標記后添加了一個冒號。 我沒有IDEA終極版,所以沒有CSS支持,這就是為什么我沒有注意到。 現在可以了。 正確的CSS應該看起來像這樣:

.label {
    -fx-font: 16px "Serif";
    -fx-padding: 5;
}

.root {
    -fx-background: cornflowerblue;
    -fx-fill: orchid;
}

暫無
暫無

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

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