非常令人沮喪,因為我遵循指南和基本教程。我可以將 CSS 樣式套用到不同的元素,但不能套用在 vbox 或 hbox。
我有以下簡單的應用程序,使用 FMXL 和 CSS 創建一個簡單的場景:
import java.net.URL; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; public class BingRen extends Application { @Override public void start(Stage primaryStage) { Parent root = null; FXMLLoader loader = new FXMLLoader(); URL xmlUrl = getClass().getResource("/BingRen.fxml"); loader.setLocation(xmlUrl); try { root = loader.load(); Scene scene = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("BingRen.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
使用 FXML,只建立一個 BordPane 和 2 個 HBox,各包含一個標籤。幾乎跟 HellopApp 一樣簡單:
還有CSS來設定一些基本屬性:
.hbox { -fx-background-color: #00ff00; -fx-border-color: #00ff00; -fx-border-width: 2px; -fx-padding: 10; -fx-spacing: 8; } .label { -fx-text-fill: #0000ff; }
標籤正確變為藍色,但未套用 hbox 樣式
事實上,這些建議都不起作用。
我試過:
對於每次更改,我都會更改標籤的顏色,以確保新版本的 CSS 能夠被讀取。
標籤總是改變顏色,但我從來沒有在水平盒中得到背景或填充
為什麼您目前的方法失敗了
檢視CSS 文件一个>.
對於HBox
#對於標籤
因此,HBox 不存在“.hbox”這樣的樣式類,除非您添加了一個樣式類,但您還沒有這樣做。
CSS 選擇器和 JavaFX 背景
閱讀標題為" 的部分CSS 和 JavaFX 場景圖」:
應用範例
因此,您可以透過三種方法解決此問題:
在 CSS 檔案中使用類型選擇器:
在 CSS 檔案中套用樣式類別:
並在 FXML 中寫入:
或在程式碼中寫入:
在 CSS 檔案中套用樣式 ID:
並在 FXML 中寫入:
或在程式碼中寫入:
選擇器範圍差異
#每種方法的標準應用的意義有所不同: