2017-04-17 25 views
0

我想通過設置菜單讓用戶編輯應用程序UI顏色。 默認顏色在.css文件中定義,例如:如何在運行時覆蓋(編輯)CSS顏色?

.vertex { 
    -fx-fill: rgba(64, 196, 255, 1); 
} 

在上面的例子我想重寫-fx填充顏色無論用戶將會從顏色拾取對話框中選擇。有沒有可能在運行時更新CSS類屬性?怎麼樣 ?

回答

1

您可以在CSS文件中使用查到的顏色:

.vertex { 
    -vertex-fill: rgba(64, 196, 255, 1); 
    -fx-fill: -vertex-fill ; 
} 

,然後你可以使用內嵌樣式在運行時修改它。您可以在任何組件的祖先上調用setStyle(),它將應用於所有後代組件。例如。適用與樣式類.vertex場景改變的一切,現場設置的根的風格:

Color selectedColor = colorPicker.getValue(); 
int red = (int) (255 * selectedColor.getRed()); 
int green = (int) (255 * selectedColor.getGreen()); 
int blue = (int) (255 * selectedColor.getBlue()); 
double opacity = selectedColor.getOpacity(); 
String userColor = String.format("rgba(%d, %d, %d, %f)", red, green, blue, opacity) ; 
scene.getRoot().setStyle("-vertex-fill: " + userColor + " ;"); 
+0

如何參照具體的CSS類?你的例子我想在.root類中設置變量。 另外我沒有問這個問題明確,我不期望答案,但這對顏色編輯很重要 - 如何將顏色從.css轉換(讀取)到Color對象? – ievgen

+0

@ievgen外部文件中的CSS將'-vertex-color'的值應用於CSS類'vertex'的任何東西的填充。 Java代碼更改'root'元素的'-vertex-color'的值,該元素將該值應用於根節點的所有後代。所以效果是改變CSS樣式類「頂點」的根節點的所有後代的填充。我添加了用於創建所選顏色的字符串表示的代碼。 –

+0

理解,非常感謝! – ievgen