Лучший справочник по свойствам и селекторам CSS JavaFX

Я пытаюсь изучить JavaFX 2, но я много спотыкался, пытаясь стилизовать свое приложение. Я нашел этот документ, который пытается документировать элементы управления и применимые к ним свойства css. Я не могу сказать, является ли он неполным, должен ли я использовать какие-то неизвестные селекторы или поддержка CSS в JavaFX недостаточно мощна для моих нужд.

Вот несколько примеров:

  • Как бы я изменил цвет фона для области за TabPane, не окрашивая все остальные дочерние компоненты (есть ли для этого селектор или, возможно, свойство?)
  • Как изменить цвет невыбранных вкладок?

person Bryan Young    schedule 24.10.2011    source источник


Ответы (2)


Вы пробовали что-то подобное?

При этом используется селектор идентификаторов, как показано в документе «Skinning JavaFX Applications with CSS». Вы также можете отключить селектор «#MyTabPane» и применить его ко всем TabPane. (Похоже, что селекторы .tab и .tab-content-area не обсуждаются в справочном руководстве. Я зашел в файл «caspian.css», содержащийся в файле jfxrt.jar, чтобы найти их.)

TabExample.css

#MyTabPane .tab {
    -fx-background-color: blue;
}
#MyTabPane .tab:selected {
    -fx-background-color: red;
}

#MyTabPane .tab-content-area {
    -fx-background-color: cyan;
}

#MyTabPane .tab *.tab-label {
    -fx-text-fill: white;
}

TabPaneEx.java

@Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World");
        StackPane root = new StackPane();
        TabPane pane = new TabPane();
        pane.setId(("MyTabPane"));
        Tab tab1 = new Tab("ONE");
        Tab tab2 = new Tab("TWO");
        Tab tab3 = new Tab("THREE");
        pane.getTabs().addAll(tab1,tab2,tab3);
        Scene scene = new Scene(root, 300, 250);
        root.getChildren().add(pane);
        scene.getStylesheets().add(
                this.getClass().getClassLoader().getResource("tabpaneex/TabExample.css").toString());
        primaryStage.setScene(scene);
        primaryStage.show();
    }
person JimClarke    schedule 05.11.2011
comment
Это именно то, что я искал (помимо .tab-header-background, который я также нашел в caspian.css). Жаль, что нет более полного справочного документа, но я полагаю, что это придет со временем. - person Bryan Young; 08.11.2011
comment
Отличный ответ. Для простоты есть ли способ получить доступ к частям вкладок из java? Я думаю что-то вроде tabPane.getTabContent.setStyle()? - person The Unfun Cat; 05.09.2012

Справочное руководство по CSS для JavaFX

Скинирование приложений JavaFX с помощью CSS

person JimClarke    schedule 01.11.2011
comment
Ни в одном из этих документов, по-видимому, нет решения этой проблемы. Могу ли я предположить, что CSS JavaFX недостаточно мощен для моих нужд? Если да, нужно ли мне создавать собственный скин? Я полагаю, что без доступа к оригинальным скинам Oracle (в пакете com.sun) было бы много работы. - person Bryan Young; 03.11.2011
comment
Я не уверен, что именно вы хотите, но это должно быть похоже. - person JimClarke; 05.11.2011
comment
Обратите внимание на инструкцию во втором документе по извлечению файла CSS по умолчанию из Jar JavaFX: jar -xf jfxrt.jar com/sun/javafx/scene/control/skin/caspian/caspian.css - person metasim; 15.08.2012