欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

無法設置hbox或vbox的樣式

錢浩然1年前8瀏覽0評論

相當令人沮喪,因為我遵循的指導方針和基本教程。我可以將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和兩個HBox,每個包含一個標簽。幾乎和HellopApp一樣簡單:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.*?>


<BorderPane fx:id="rootBorderPane"
        xmlns="http://javafx.com/javafx"
        xmlns:fx="http://javafx.com/fxml"
        fx:controller="MainControler">
    <top>
        <HBox>
            <Label text="BingRen app" />
        </HBox>
    </top>
    <bottom>
        <HBox>
            <Label text="Status bar" />
        </HBox>
    </bottom>
    <center>
    </center>
</BorderPane>

和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樣式

事實上,這些建議都不起作用。

我試過了:

改變。hbox到。css文件中的Hbox 在css文件中創建一個#allbox并添加FX-id = & quot;allbox & quot和fxml文件 對于每個變化,我改變標簽的顏色,以確保新版本的css被通讀。

標簽總是改變顏色,但我從來沒有在Hboxes得到背景或paddings

為什么你目前的方法失敗了

看看CSS文檔。

對于HBox

樣式類:默認為空

對于標簽

樣式類:標簽

所以不存在像& quot。hbox & quot除非你添加一個,你沒有這樣做。

CSS選擇器和JavaFX的背景

閱讀標題為& quotCSS和JavaFX場景圖& quot:

CSS選擇器用于將樣式與場景圖節點相匹配。這 節點與CSS選擇器的關系如下:

節點的getTypeSelector方法返回一個類似于 CSS類型選擇器。默認情況下,此方法返回的簡單名稱 這個班級。請注意,內部類或 匿名類可能不能用作類型選擇器。在這種情況下, 應該重寫此方法以返回有意義的值。 每個 場景圖中的節點具有styleClass屬性。注意,一個節點 可能有多個樣式類。節點的styleClass是類似的 到class = & quot..."可以出現在HTML元素上的屬性。看見 班級選擇器。 場景圖中的每個節點都有一個id變量 字符串。這類似于id = & quot..."可以出現的屬性 HTML元素。請參見ID選擇器。 應用示例

所以有三種方法可以解決這個問題:

在CSS文件中使用類型選擇器:

HBox { <css rules> }

在CSS文件中應用樣式類:

.my-hbox-styleclass { <css rules> }

在FXML中寫下:

<HBox styleClass="my-hbox-styleclass">

或者在代碼編寫中:

myHBox.getStyleClass().add("my-hbox-styleclass");

在CSS文件中應用樣式id:

#my-hbox-id { <css rules> }

在FXML中寫下:

<HBox id="my-hbox-id">

或者在代碼編寫中:

myHBox.setId("my-hbox-id");

選擇器范圍差異

每種方法的標準應用都有不同的含義:

類型選擇器將應用于用戶界面中的所有HBox類型。 類選擇器將應用于任何應用了給定樣式類的東西。 id選擇器通常用于UI中的單個節點,而不是節點的類型或類。它在FXML文檔或場景圖樹中應該是唯一的,盡管這不是強制的。