ホームページ  >  に質問  >  本文

水平または垂直のボックスのスタイルを設定できません

<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>
P粉773659687P粉773659687435日前534

全員に返信(1)返信します

  • P粉041881924

    P粉0418819242023-09-04 00:20:20

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

    表示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 ドキュメントまたはシーン グラフ ツリー内で一意である必要があります。
    4. 返事
      0
  • キャンセル返事