Как добавить эффекты CSS в «Сцену» приложения JavaFX?

Мне нужно добавить эффект CSS к «сцене» определенного моего приложения JavaFX, а не к конкретному компоненту сцены или сцены. Я пытался использовать:

.main-scene{...}

а также,

.main-class{...}

Но ни то, ни другое не сработало.


person NovoBook    schedule 17.06.2014    source источник


Ответы (2)


CSS работает с узлами, а не со сценами.

Существует класс css .root, который применяется к корневому узлу всех сцен в вашем приложении. Для максимальной гибкости корнем сцены должен быть Region, так как регионы имеют более широкие возможности стиля в JavaFX.

Так, например, если вы настроите свою основную сцену следующим образом.

Pane pane = new Pane();
pane.setId("my-pane");
stage.setScene(new Scene(pane, 300, 200));

Затем вы можете стилизовать корневую панель (всех сцен), используя:

.root {
   -fx-background-color: yellow;
}

Или просто конкретную корневую панель в образце, используя:

#my-pane {
   -fx-background-color: firebrick;
}
person jewelsea    schedule 17.06.2014

Вы можете напрямую добавить нужный стиль в класс стилей .root.

Из документов

Класс стиля .root применяется к корневому узлу экземпляра сцены. Поскольку все узлы в графе сцены являются потомками корневого узла, стили в классе стилей .root могут применяться к любому узлу.

Стили, написанные внутри этого класса, не нужно применять/добавлять извне. Просто добавьте свой стиль в .root, и он будет автоматически подхвачен javafx.

.root{
    //Your styles
}

Хотя вам нужно добавить файл css извне!

scene.getStylesheets().add(
  getClass().getResource("myCss.css").toExternalForm()
);
person ItachiUchiha    schedule 17.06.2014