Impossible de styliser les cases horizontales ou verticales
P粉773659687
P粉773659687 2023-09-03 10:20:53
0
1
543
<p>Très frustrant lorsque je suis des guides et des tutoriels de base. Je peux appliquer des styles CSS à différents éléments, mais pas à vbox ou hbox. </p> <p>J'ai l'application simple suivante, utilisant FMXL et CSS pour créer une scène simple : </p> <pre class="brush:php;toolbar:false;">importer java.net.URL; importer javafx.application.Application ; importer javafx.fxml.FXMLLoader ; importer javafx.stage.Stage ; importer javafx.scene.Parent ; importer javafx.scene.Scene ; la classe publique BingRen étend l'application { @Passer outre public void start (Stage primaireStage) { Racine parent = null ; Chargeur FXMLLoader = new FXMLLoader(); URL xmlUrl = getClass().getResource("/BingRen.fxml"); chargeur.setLocation(xmlUrl); essayer { racine = chargeur.load(); Scène scène = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("BingRen.css").toExternalForm()); PrimaryStage.setScene(scène); primaireStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main (String[] arguments) { lancer(arguments); } }</pré> <p>À l'aide de FXML, créez simplement un BordPane et 2 HBoxes, chacune contenant une étiquette.几乎和 HellopApp 一样简单:</p> <pre class="brush:php;toolbar:false;"><?xml version="1.0" encodage="UTF-8"?> <?importer java.lang.*?> <?importer java.util.*?> <?importer javafx.scene.*?> <?importer javafx.scene.control.*?> <?importer javafx.scene.layout.*?> <?importer javafx.geometry.*?> <BorderPane fx:id="rootBorderPane" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="MainControler"> <haut> <HBox> <Texte de l'étiquette="Application BingRen" /> </HBox> </haut> <bas> <HBox> <Texte de l'étiquette="Barre d'état" /> </HBox> ≪/bas> <centre> </centre> </BorderPane></pre> <p>还有CSS来设置一些基本属性:</p> <pre class="brush:php;toolbar:false;">.hbox { -fx-background-color : #00ff00 ; -fx-border-color : #00ff00 ; -fx-border-width : 2px ; -fx-rembourrage : 10 ; -espacement fx : 8 ; } .étiquette { -fx-text-fill : #0000ff ; }</pré> <p>标签正确变为蓝色,但未应用 hbox 样式</p> <heure /> <p>事实上,这些建议都不起作用。</p> <p>我尝试过:</p> <ul> <li>将 css 文件中的 .hbox 更改为 .Hbox</li> <li>在css文件中创建#allbox并添加fx-id="allbox" et fxml文件</li> </ul> <p> <p>
P粉773659687
P粉773659687

répondre à tous(1)
P粉041881924

Pourquoi votre approche actuelle échoue

Voir la Documentation CSS一个>.

Pour HBox

Pour Tags

Par conséquent, il n'y a pas de classe de style comme ".hbox" pour HBox, à moins que vous n'en ajoutiez une, ce que vous n'avez pas encore fait.

Sélecteurs CSS et arrière-plans JavaFX

Lisez une partie du graphique de scène CSS et JavaFX intitulée " :

Exemples d'application

Vous pouvez donc résoudre ce problème de trois manières :

  1. Utilisez le sélecteur de type dans les fichiers CSS :

    HBox { <css rules> }
  2. Appliquer des classes de style dans les fichiers CSS :

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

    et écrivez en FXML :

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

    Ou écrivez dans le code :

    myHBox.getStyleClass().add("my-hbox-styleclass");
  3. Appliquer Style ID dans le fichier CSS :

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

    et écrivez en FXML :

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

    Ou écrivez dans le code :

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

Différence de portée du sélecteur

La signification de l'application standard diffère pour chaque méthode :

  1. Le sélecteur de type sera appliqué à tous les types de HBox dans l'interface utilisateur.
  2. Class Selector sera appliqué à tout contenu auquel la classe de style donnée lui est appliquée.
  3. Le
  4. sélecteur d'identifiant est généralement utilisé pour les nœuds individuels dans l'interface utilisateur, plutôt que pour le type ou la classe du nœud. Il doit être unique au sein du document FXML ou de l'arborescence du graphique de scène, bien que cela ne soit pas obligatoire.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal