Maison  >  Questions et réponses  >  le corps du texte

Impossible de styliser les cases horizontales ou verticales

<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粉773659687P粉773659687435 Il y a quelques jours533

répondre à tous(1)je répondrai

  • P粉041881924

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

    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.

    répondre
    0
  • Annulerrépondre