2012-06-02 3 views
1

Я пытаюсь войти в JavaFX 2.0, но я не могу получить .css Таблицы стилей для работы в моем приложении. I've следовали руководство по http://docs.oracle.com/javafx/2/get_started/css.htm#BABBGJBI, но всякий раз, когда я пытаюсь импортировать .css файл черезJavaFX 2 - Не могу импортировать .css Файл

 scene.getStylesheets().add(Login.class.getResource("loginform.css").toExternalForm()); 

Я получаю следующее сообщение об ошибке:

Exception in Application start method 
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:399) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at Login.start(Login.java:68) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:315) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:174) 
    at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:141) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$2$1.run(WinApplication.java:62) 
    ... 1 more 

Путь КСС находится на моем пути затмение проекта: C:\Users\UserName\Dropbox\Documents\Eclipse\FirstExamples\loginform.css

Буду признателен за любую помощь, я не могу заставить ее работать, а не с абсолютными путями или с относительными, как показано в примере.

ответ

3

Проверьте скомпилированный путь вывода вашего проекта Eclipse и убедитесь, что loginform.css находится в том же каталоге, что Login.class

I´ve solved the problem by putting stylesheets into my src folder not a very nice solution but going up by ../formm.css doesn´t seem to work dunno why

Вы запрашиваете файл CSS с помощью метода class.getResource, который будет искать ресурс в том же месте, в котором находится класс. Когда вы кладете таблицу стилей в свою папку src, то любая система сборки, которую вы используете, копирует таблицу стилей в тот же каталог, что и Login.class во время сборки. Если вы не разместите его в этой папке src, копия не будет выполнена.

Если вы не хотите размещать файл css в том же каталоге, что и ваш источник Java, то либо установите свою систему сборки, чтобы скопировать ее из другого каталога, либо не используйте механизм загрузчика классов при добавлении таблица стилей, например используйте абсолютный файл или http url или файл url на основе user.dir system property (текущий рабочий каталог).

На самом деле, просто размещение текста в таблице src и доступ к нему таким образом, который вы делаете, прекрасны, а также облегчает расположение ресурсов при развертывании приложения в разных средах.

+0

Я решил проблему, поставив таблицы стилей в свою папку src не очень приятное решение, но идущее вверх ../formm.css, похоже, не работает dunno why =/ – Googles

+0

Обновленный ответ также объясняет, почему размещение таблиц стилей в вашей папке src работает для вас. – jewelsea

1

Если вы используете что-либо в качестве ресурса, вы должны указать его имя «/», и этот ресурс должен находиться в пути к классам.

У меня есть настройка с каталогом, например. ресурсов, который содержит .css. Затем я использую это:

scene.getStylesheets().add(Login.class.getResource("/loginform.css").toExternalForm()); 

Каталог «ресурсов», который содержит добавляется путь к классам в .css файл (в Eclipse, например, просто сделать это будет папка источника).

Очень жаль, что исключение совершенно бесполезно; Я заметил, что проблема с .css была связана с тем, что я добавил ее впервые.

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