Tidak dapat menggayakan kotak mendatar atau menegak
P粉773659687
2023-09-03 10:20:53
<p>Sangat mengecewakan kerana saya mengikuti panduan dan tutorial asas. Saya boleh menggunakan gaya CSS pada elemen yang berbeza, tetapi bukan pada vbox atau hbox. </p>
<p>Saya mempunyai aplikasi mudah berikut, menggunakan FMXL dan CSS untuk mencipta pemandangan mudah: </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;
BingRen kelas awam melanjutkan Aplikasi {
@Override
permulaan kekosongan awam(Peringkat primerStage) {
Akar induk = null;
FXMLLoader loader = FXMLLoader baharu();
URL xmlUrl = getClass().getResource("/BingRen.fxml");
loader.setLocation(xmlUrl);
cuba {
akar = loader.load();
Adegan adegan = Adegan baharu(akar,400,400);
scene.getStylesheets().add(getClass().getResource("BingRen.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
pelancaran(args);
}
}</pre>
<p>Menggunakan FXML, buat hanya BordPane dan 2 HBox, setiap satu mengandungi label.几乎和 HellopApp 一样简单:</p>
<pre class="brush:php;toolbar:false;"><?xml version="1.0" pengekodan="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">
<atas>
<HBox>
<Label text="Apl BingRen" />
</HBox>
</atas>
<bawah>
<HBox>
<Teks label="Bar status" />
</HBox>
</bawah>
<pusat>
</center>
</BorderPane></pra>
<p>还有CSS来设置一些基本属性:</p>
<pre class="brush:php;toolbar:false;">.hbox {
-warna-latar-fx: #00ff00;
-fx-border-color: #00ff00;
-fx-border-width: 2px;
-fx-padding: 10;
-fx-jarak: 8;
}
.label {
-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"和fxml文件</li>
</ul>
<p>对于每次更改,我都会更改标签的颜色,以确保新版本的 CSS 能够被读取。</p<
<p>标签总是改变颜色,但我从来没有在水平盒中得到背景或填充</p>
Mengapa pendekatan semasa anda gagal
Lihat Dokumentasi CSS一个>.
Untuk HBox
Untuk Tag
Oleh itu, tiada kelas gaya seperti ".hbox" untuk HBox, melainkan anda menambah satu, yang belum anda lakukan.
Pemilih CSS dan Latar Belakang JavaFX
Baca sebahagian daripada graf adegan CSS dan JavaFX bertajuk ":
Contoh aplikasi
Jadi anda boleh selesaikan masalah ini dengan tiga cara:
Gunakan pemilih jenis dalam fail CSS:
Gunakan kelas gaya dalam fail CSS:
dan tulis dalam FXML:
Atau tulis dalam kod:
Gunakan ID Gaya dalam fail CSS:
dan tulis dalam FXML:
Atau tulis dalam kod:
Perbezaan skop pemilih
Maksud aplikasi standard berbeza untuk setiap kaedah: