2016-11-12 36 views
1

我構建了一個基於Java Swing的遊戲(Reversi aka Othello,student-project)。 通過MenuBar中的ColorChooser,我爲用戶提供了爲背景,法庭和玩家選擇單獨顏色的可能性。Java FX用戶選擇顏色CSS

this.menu_bar.bg_color.addActionListener(e -> { Color buffer = colors[0]; 
     colors[0] = JColorChooser.showDialog(null, "Hintergrundfarbe", colors[0]); 
     if (colors[0] == null) 
      colors[0] = buffer; 
     else 
      this.frame.change_colors(colors);}); 

將使用的顏色保存在「顏色」數組中,沿着某些方法調用選定的顏色設置。

void change_colors(Color[] colors) 
{ 
    this.colors = colors; 
    this.setBackground(colors[1]); 
} 

所有工作正常。

現在我建立一個Java Fx等價物。我不使用FXML或場景生成器,但我嘗試使用CSS文件樣式。

//.java 
this.getStylesheets().add("Fx_GUI/Style.css"); 
this.getStyleClass().add("cell"); 

//.css 
.cell 
{ 
    -fx-background-color: rgb(34, 139, 34); 
} 

我的問題:是否有一種基於css的方式來獲得相同的效果,爲我的組件設置單獨的顏色集?例如在.css中使用變量或類似的東西?

回答

1

您可以使用looked-up colors(向下滾動超出色塊爲查找的顏色說明):

CSS:

.root { 
    /* default value */ 
    -cell-background: rgb(34, 139, 34); 
} 
.cell { 
    -fx-background-color: -cell-background ; 
} 

的Java:

this.getStylesheets().add("Fx_GUI/Style.css"); 
this.getStyleClass().add("cell"); 

// ... 

int r = ... ; 
int g = ... ; 
int b = ... ; 
this.setStyle(String.format("-cell-background: rgb(%d, %d, %d);", r, g, b));