Heim  >  Fragen und Antworten  >  Hauptteil

Es können keine horizontalen oder vertikalen Felder formatiert werden

<p>Sehr frustrierend, da ich Anleitungen und grundlegende Tutorials folge. Ich kann CSS-Stile auf verschiedene Elemente anwenden, aber nicht auf vbox oder hbox. </p> <p>Ich habe die folgende einfache Anwendung, die FMXL und CSS verwendet, um eine einfache Szene zu erstellen: </p> <pre class="brush:php;toolbar:false;">import java.net.URL; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; öffentliche Klasse BingRen erweitert Anwendung { @Override public void start(Stage PrimaryStage) { Übergeordneter Stamm = null; FXMLLoader Loader = new FXMLLoader(); URL xmlUrl = getClass().getResource("/BingRen.fxml"); loader.setLocation(xmlUrl); versuchen { root = loader.load(); Szene scene = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("BingRen.css").toExternalForm()); PrimaryStage.setScene(Szene); PrimaryStage.show(); } Catch(Ausnahme e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }</pre> <p>Erstellen Sie mit FXML nur ein BordPane und zwei HBoxes, die jeweils eine Beschriftung enthalten.几乎和 HellopApp 一样简单:</p> <pre class="brush:php;toolbar:false;"><?xml version="1.0" Encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.geometry.*?> <BorderPane fx:id="rootBorderPane" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="MainControler"> <oben> <HBox> <Label text="BingRen-App" /> </HBox> </top> <unten> <HBox> <Label text="Statusleiste" /> </HBox> </unten> <Mitte> </center> </BorderPane></pre> <p>还有CSS来设置一些基本属性:</p> <pre class="brush:php;toolbar:false;">.hbox { -fx-Hintergrundfarbe: #00ff00; -fx-border-color: #00ff00; -fx-Rahmenbreite: 2px; -fx-padding: 10; -fx-spacing: 8; } .Etikett { -fx-text-fill: #0000ff; }</pre> <p>标签正确变为蓝色,但未应用 hbox 样式</p> <hr /> <p>事实上,这些建议都不起作用.</p> <p>我尝试过:</p> <ul> <li>将 css 文件中的 .hbox 更改为 .Hbox</li> <li>在css文件中创建#allbox并添加fx-id="allbox" und fxml文件</li> </ul> <p> <p>
P粉773659687P粉773659687384 Tage vor495

Antworte allen(1)Ich werde antworten

  • P粉041881924

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

    为什么您当前的方法失败了

    查看CSS 文档.

    对于HBox

    对于标签

    因此,HBox 不存在“.hbox”这样的样式类,除非您添加了一个样式类,但您还没有这样做。

    CSS 选择器和 JavaFX 背景

    阅读标题为 " 的部分CSS 和 JavaFX 场景图”

    应用示例

    因此,您可以通过三种方法解决此问题:

    1. 在 CSS 文件中使用类型选择器

      HBox { <css rules> }
    2. 在 CSS 文件中应用样式类

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

      并在 FXML 中写入:

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

      或者在代码中写入:

      myHBox.getStyleClass().add("my-hbox-styleclass");
    3. 在 CSS 文件中应用样式 ID

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

      并在 FXML 中写入:

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

      或者在代码中写入:

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

    选择器范围差异

    每种方法的标准应用的含义有所不同:

    1. 类型选择器将应用于用户界面中的所有 HBox 类型。
    2. 类选择器将应用于应用了给定样式类的任何内容。
    3. id 选择器通常用于 UI 中的单个节点,而不是节点的类型或类。它在 FXML 文档或场景图树中应该是唯一的,尽管这不是强制的。

    Antwort
    0
  • StornierenAntwort