2015-10-30 140 views
1

我遇到了JavaFX GUI的樣式表問題。 我的樣式表將不加載,我得到這個錯誤:eclipse未找到JavaFX css資源

com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 
WARNING: Resource "file:images\stylesheet.css" not found. 

我試圖把stylesheet.css中在同一文件夾中的圖像。圖像沒有問題,但找不到樣式表。

scene.getStylesheets().add("images\\stylesheet.css"); 

我也試過這樣:

scene.getStylesheets().add("file:images\\stylesheet.css"); 

和:

scene.getStylesheets().add("file:///images/stylesheet.css"); 

我也嘗試過不同的文件夾,就像一個在.java文件是

似乎沒有任何上班。這就像Eclipse不能識別樣式表。

回答

0

在JavaFX的getClass().getResource("/images/stylesheet.css");

scene.getStylesheets().add(
    getClass().getResource("/images/stylesheet.css") 
); 
0

圖像嘗試在內部實現資源從類加載器加載,但不幸的是這不是樣式表真。所以,如果你說:

new Image("/Images/background.png"); 

它被轉化爲:

new Image(getClass().getClassLoader().getResource("Images/background.png"); 

,但它並沒有在getStylesheets().add()的情況下發生的。因此,爲了運行它,你需要自己添加一個類加載器:

scene.getStylesheets().add(
     getClass().getClassLoader().getResource("images\\stylesheet.css")); 

注:這裏的路徑取決於CSS文件的位置。

0

使用斜線,而不是雙反斜線

scene.getStylesheets().add("images/stylesheet.css"); 
1

的問題是,Java的com.sun.javafx.css.StyleManager作品使用URL的,但它不會做File.toString()轉化爲URL的一個偉大的工作,所以你必須傳遞一個已經轉換爲文件的字符串,一個URL,並返回一個字符串。因此,當它將字符串解析爲URL時,它不會在空格字符上窒息。

這工作:

String fontSheet = fileToStylesheetString(new File ("location")); 

if (fontSheet == null) { 
    //Do Whatever you want with logging/errors/etc. 
} else { 
    scene.getStylesheets().add(fontSheet); 
} 

public String fileToStylesheetString (File stylesheetFile) { 
    try { 
     return stylesheetFile.toURI().toURL().toString(); 
    } catch (MalformedURLException e) { 
     return null; 
    } 
}