Возможно ли написать несколько узлов в новом запросе @Media в CSS в Javafx 25?CSS

Разбираемся в CSS
Ответить
Anonymous
 Возможно ли написать несколько узлов в новом запросе @Media в CSS в Javafx 25?

Сообщение Anonymous »

В https://bugs.openjdk.org/browse/jdk-8345348 в описании это фрагмент CSS:
.button {
-fx-background-color: lightgray;
}

@media (prefers-color-scheme: dark) {
.button {
-fx-background-color: darkgray;
}
}
< /code>
Но когда я использую этот код в своем примере: < /p>
.label {
-fx-text-fill: black;
}

.border-pane {
-fx-background-color: white;
}

@media (prefers-color-scheme: dark) {
.border-pane {
-fx-background-color: black;
}
.label {
-fx-text-fill: white;
}
}
< /code>
Javafx Node Label (Style Class .label) не является правильным стилизованием. Только javafx node borderpane (стиль класса .border-pane)-правильный стиль. />
Вот мой минимальный, воспроизводимый пример: < /p>
Содержание файла demo.java < /em>: < /p>
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Demo extends Application {

public static void main(String[] args) {
launch();
}

@Override
public void start(Stage primaryStage) throws Exception {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");

String labelContent = "Hello, JavaFX " + javafxVersion
+ ", running on Java " + javaVersion + ".";

Label mainLabel = new Label(labelContent);

BorderPane root = new BorderPane();
root.getStyleClass().add("border-pane");
root.setCenter(mainLabel);

Scene scene = new Scene(root, 640, 480);
scene.getStylesheets().add("test.css");

primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX Demo");
primaryStage.show();

}

}

Содержание файла test.css :
.label {
-fx-text-fill: black;
}

.border-pane {
-fx-background-color: white;
}

@media (prefers-color-scheme: dark) {
.border-pane {
-fx-background-color: black;
}
.label {
-fx-text-fill: white;
}
}

Содержание файла rundemo.bat :
@ECHO OFF
REM Launching as Single-File Source-Code Program
D:\JDKs\Azul_Zulu_JDKFX25\zulu25.28.85-ca-fx-jdk25.0.0-win_x64\bin\java --enable-native-access=javafx.graphics Demo.java
< /code>
Среда:
OS: Windows 11 Pro (64 -бит), версия 24H2, ОС сборка 26100.6584 < /p>
java (использовал Azul Zulu Build of OpenJDK 25 с Javafx 25 - Distrib. ZULU25.28.85-CA-FX-JDK25.0.0-win_x64.zip): < /p>
java --version
openjdk 25 2025-09-16 LTS
OpenJDK Runtime Environment Zulu25.28+85-CA (build 25+36-LTS)
OpenJDK 64-Bit Server VM Zulu25.28+85-CA (build 25+36-LTS, mixed mode, sharing)

Примечания для запуска demo.java в Windows:
  • Запуск demo.java by rundemo.bat ; prerequisite is installed required Java with JavaFX (need modify path to java tool in this file runDemo.bat)
  • launch Windows Settings application
  • find Color mode in Home page (below on Home Page)
  • Переключение с Light на Dark и наоборот (и повторить)
  • Ожидаемый результат - это переключение цвета сцены фонового применения и цвета ярлыка (когда черный фоновый фон, настройки белой и вице Dark или light )
  • здесь IS Is Bug ; Потому что, когда фон является черным, то этикетка также является черной, и она должна быть белой, или в @media Query может быть только одним узлом
Примечание: после запуска demo.java в консоли (cmd в окнах).D:\JDKs\JDK_samples>runDemo.bat
Sep 19, 2025 9:26:46 AM javafx.css.CssParser consumeRBrace
WARNING: CSS Error parsing file:/D:/JDKs/JDK_samples/test.css: Expected RBRACE at [13,1]


Подробнее здесь: https://stackoverflow.com/questions/797 ... -javafx-25
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»