2017-01-13 2 views
0

Я пытаюсь добавить внешний .css файл графа сцены FX Java следующим образом:Как добавить CSS к элементу JavaFX

File f = new File("../theming/css/test.css"); 
scene.getStylesheets().clear(); 
scene.getStylesheets().add("file:///" + f.getAbsolutePath().replace("\\", "/")); 

test.css

.custom-background { 
    -fx-background-color: #1d1d1d; 
    -fx-background-color: red; 
    -fx-padding: 15; 
    -fx-spacing: 10; 
} 

.label { 
    -fx-font-size: 11pt; 
    -fx-font-family: "Segoe UI Semibold"; 
    -fx-text-fill: white; 
    -fx-opacity: 0.6; 
} 

классы стилей добавляются хорошо, кроме случаев, когда я пытаюсь добавить пользовательский класс к элементу:

Hbox hbox = new HBox(); 
hbox.setSpacing(10); 
hbox.setMinSize(400, 300); 
hbox.getStyleClass().add("custom-background"); 

Это не получается.

Что я могу делать неправильно?

Заранее спасибо.

+0

Любая причина, по которой вы определяете дважды '-fx-background-color' в 2 классах? –

+0

Извините @NicolasFilotto. Пожалуйста, проигнорируйте это. Я отредактировал это. Спасибо, что указали. –

ответ

4

Не пытайтесь преобразовать имя файла в URL. Вместо того, чтобы использовать сборку в способах File класса:

scene.getStylesheets().setAll(f.toURI().toURL().toExternalForm()); 

Это предполагает, что файл находится по указанному пути относительно текущей рабочей директории, когда приложение запускается. В большинстве случаев использование относительного пути к файлу - плохая идея, поскольку запуск из другого каталога приведет к поломке программы. Было бы предпочтительнее включить файл css в качестве ресурса.

Смежные вопросы