2016-12-27 20 views
0

我開發自定義按鈕控件。代碼非常簡單。我只是創建MyButton類擴展Button類。我在同一個文件中添加css。這樣如何用css文件將jar文件導入場景生成器? (css文件不適用)

public class PrimaryButton extends Button { 
public PrimaryButton(){ 
    getStyleClass().add("primary-button"); 
    getStylesheets().add("primarybutton.css"); 
    } 
} 

我的項目結構this.

我做了這個項目文件罐子。然後我將這個jar導入場景構建器。但css劑量不適用。 like this。哪裏不對?

回答

0

我認爲這個問題是在你的CSS文件路徑,當我改變了它,到

getStylesheets().add("sample/primarybutton.css"); 

它工作得很好,這也工作得很好

getStylesheets().add("/sample/primarybutton.css"); 

注意:我的應用程序架構是完全一致,你

這裏的完整樣本

public class MyButton extends Button { 
public MyButton(){ 
    getStylesheets().add("sample/primarybutton.css"); 
    //you can also use this 
    //getStylesheets().add("/sample/primarybutton.css"); 
    getStyleClass().add("primary-button"); 
} } 

注: 「主鍵」 是一個CSS類在 「primarybutton.css」 文件

希望這是有用的,解決你的問題

+0

謝謝你的回答。但我試過這種方式,我無法解決問題。 – rlawlstjd007

0

字符串你傳遞給樣式表的列表被視爲URL。 documentation陳述爲:

該URL是格式爲[scheme:] [// authority] [path]的分層URI。 如果URL沒有[scheme:]組件,則URL被認爲是 僅作爲[path]組件。 [path]的任何前導'/'字符將被忽略,並且[path]被視爲相對於應用程序類路徑的 根的路徑。

由於兩個類和樣式都在sample包,相對於類路徑樣式表的URL是sample/primarybutton.css,所以你可以使用

getStylesheets().add("sample/primarybutton.css"); 

如果你想使用的事實上,樣式表與類相同,並且使代碼更加可移植(即,不對包名進行硬編碼),您可以從當前類創建完整的URL,然後將其轉換爲字符串:

getStylesheets().add(getClass().getResource("primarybutton.css").toExternalForm()); 

這是可行的,因爲getClass().getResource(...)創建一個URL,其中資源名稱(如果它不以前導/開頭)被解釋爲相對於當前類別。

我通常更喜歡後一種方法,儘管其他人可能不同意。

+0

'toExternalForm()'是什麼意思? – rlawlstjd007

+0

它將URL轉換爲外部表單,即轉換爲不依賴於上下文的表單。 –

+0

謝謝,太棒了! – rlawlstjd007