水平または垂直のボックスのスタイルを設定できません
<p>ガイドや基本的なチュートリアルに従っていると、とてもイライラします。 CSS スタイルをさまざまな要素に適用できますが、vbox や hbox には適用できません。 </p>
<p>FMXL と CSS を使用して単純なシーンを作成する、次のような単純なアプリケーションがあります。 </p>
<pre class="brush:php;toolbar:false;">import java.net.URL;
インポートjavafx.application.Application;
インポートjavafx.fxml.FXMLLoader;
インポートjavafx.stage.Stage;
インポートjavafx.scene.Parent;
インポートjavafx.scene.Scene;
パブリック クラス BingRen extends Application {
@オーバーライド
public void start(ステージprimaryStage) {
親ルート = null;
FXMLLoader ローダー = 新しい FXMLLoader();
URL xmlUrl = getClass().getResource("/BingRen.fxml");
loader.setLocation(xmlUrl);
試す {
ルート = ローダー.ロード();
シーン scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("BingRen.css").toExternalForm());
PrimaryStage.setScene(シーン);
PrimaryStage.show();
} catch(例外 e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}</pre>
<p>FXML を使用して、それぞれにラベルを含む 1 つの BordPane と 2 つの HBox だけを作成します。 HellopApp とほぼ同じくらい簡単です: </p>
<pre class="brush:php;toolbar:false;"><?xml バージョン="1.0" エンコーディング="UTF-8"?>
<?java.lang.* をインポートします?>
<?java.util.* をインポートします?>
<?javafx.scene.* をインポートします?>
<?import javafx.scene.control.*?>
<?javafx.scene.layout.* をインポートします?>
<?import javafx.geometry.*?>
<BorderPane fx:id="rootBorderPane"
xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="メインコントローラ">
<トップ>
<Hボックス>
<Label text="BingRen アプリ" />
</HBox>
</トップ>
<下>
<Hボックス>
<ラベルテキスト="ステータスバー" />
</HBox>
</下>
<中央>
</center>
</BorderPane></pre>
<p>いくつかの基本的なプロパティを設定するための CSS もあります:</p>
<pre class="brush:php;toolbar:false;">.hbox {
-fx-背景色: #00ff00;
-fx-border-color: #00ff00;
-fx-border-width: 2px;
-fx-パディング: 10;
-fx-間隔: 8;
}
.label {
-fx-text-fill: #0000ff;
}</pre>
<p>ラベルは正しく青色になりますが、hbox スタイルは適用されません</p>
<p>実際、これらの提案はどれも機能しません。 </p>
<p>試してみました: </p>
<li>CSS ファイルの .hbox を .Hbox</li> に変更します。
<li>CSS ファイルに #allbox を作成し、fx-id="allbox" と fxml ファイルを追加します</li>
</ul>
<p>変更を加えるたびに、新しいバージョンの CSS を確実に読み取れるようにラベルの色を変更します。</p>
<p>ラベルの色は常に変わりますが、水平ボックスの背景やパディングは取得できません</p>