JavaFX 2: Как загрузить таблицу стилей в подкласс Scene, распространяемый как часть библиотеки? - PullRequest
3 голосов
/ 26 января 2012

Я создаю подклассы для многих классов JavaFX 2, чтобы распространять их как часть библиотеки, которая будет использоваться другими.Это требует, чтобы таблица стилей (часть библиотеки) была применена ко всем экземплярам MySceneClass (не его настоящее имя :-)), и я не могу найти магию правильного пути.Я пробовал варианты:

mySceneInstance.getStylesheets.addAll("/com/mine/css/MySceneClass.css")

, где com.mine.css - это пакет библиотеки: я попробовал варианты, не включающие косую черту, обрезающую ведущую часть пути, возможно, несколькодругие.Но я всегда получаю сообщение:

WARNING: com.sun.javafx.css.StyleManager loadStylesheet Resource "/com/mine/css/MySceneClass.css" not found.

Я также пытался поместить класс заглушки Css в пакет css, а затем с помощью

com.mine.css.Css.getResource("Scene.css")

получить URL-адрес, который я могуперейти к ... getStyleSheets.addAll (...), но когда я это делаю, я получаю сообщение вроде:

WARNING: com.sun.javafx.css.StyleManager loadStylesheet Resource "../css/Scene.css" not found.

, что очень сбивает с толку, поскольку getResource, похоже, правильно идентифицирует файл, ноЯ все еще не могу загрузить его.

Это на текущем предварительном просмотре разработки для OS X (я считаю, что версия 2.1 09).

Спасибо за любую помощь, Кен

Ответы [ 2 ]

12 голосов
/ 26 января 2012

Мне повезло только с этим синтаксисом, найденным в примере Ensemble:

scene.getStylesheets().addAll(Ensemble2.class.getResource("ensemble2.css").toExternalForm());
3 голосов
/ 27 января 2012

Наконец, отследил проблему до Intellij IDEA CE, который по умолчанию не распознает CSS-файлы как ресурс, который необходимо скопировать из источника в целевой каталог. Добавление шаблона * .css в список распознанных типов ресурсов решило проблему.

...