水平または垂直のボックスのスタイルを設定できません
P粉773659687
P粉773659687 2023-09-03 10:20:53
0
1
552
<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>
P粉773659687
P粉773659687

全員に返信(1)
P粉041881924

現在のアプローチが失敗する理由

表示CSSドキュメント一个>.

ForHBox

タグの場合

したがって、まだ追加していない限り、HBox には「.hbox」のようなスタイル クラスはありません。

CSS セレクターと JavaFX 背景

「CSS と JavaFX シーン グラフ」というタイトルのセクションを読んでください。:

アプリケーション例

したがって、この問題は 3 つの方法で解決できます:

  1. CSS ファイルでの

    タイプ セレクター の使用: リーリー

  2. CSS ファイルで

    スタイル クラス を適用します: リーリー

    そして FXML で次のように記述します:

    リーリー

    またはコードに次のように記述します:

    リーリー

  3. CSS ファイルに

    スタイル ID を適用します: リーリー

    そして FXML で次のように記述します:

    リーリー

    またはコードに次のように記述します:

    リーリー

セレクター範囲の違い

各メソッドの標準アプリケーションの意味は異なります:

  1. タイプ セレクター ユーザー インターフェイスのすべての HBox タイプに適用されます。
  2. クラス セレクター 指定されたスタイル クラスが適用されているコンテンツに適用されます。
  3. id ​​selector 通常、ノードのタイプやクラスではなく、UI 内の個々のノードに使用されます。これは必須ではありませんが、FXML ドキュメントまたはシーン グラフ ツリー内で一意である必要があります。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート