Es können keine horizontalen oder vertikalen Felder formatiert werden
P粉773659687
2023-09-03 10:20:53
<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>
为什么您当前的方法失败了
查看CSS 文档一个>.
对于HBox
对于标签
因此,HBox 不存在“.hbox”这样的样式类,除非您添加了一个样式类,但您还没有这样做。
CSS 选择器和 JavaFX 背景
阅读标题为 " 的部分CSS 和 JavaFX 场景图”:
应用示例
因此,您可以通过三种方法解决此问题:
在 CSS 文件中使用类型选择器:
在 CSS 文件中应用样式类:
并在 FXML 中写入:
或者在代码中写入:
在 CSS 文件中应用样式 ID:
并在 FXML 中写入:
或者在代码中写入:
选择器范围差异
每种方法的标准应用的含义有所不同: