我构建了一个基于Java Swing的游戏(Reversi aka Othello,学生项目)。 通过MenuBar中的ColorChooser,我可以让用户为背景,球场和球员选择单独的颜色。
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或Scene Builder,但我尝试用CSS文件设置样式。
//.java
this.getStylesheets().add("Fx_GUI/Style.css");
this.getStyleClass().add("cell");
//.css
.cell
{
-fx-background-color: rgb(34, 139, 34);
}
我的问题:是否有基于CSS的方法来获得相同的效果,为我的组件设置单独的颜色集?例如,在.css中使用变量或类似的东西?
答案 0 :(得分:1)
您可以使用looked-up colors(向下滚动颜色方块以查找查找颜色):
CSS:
.root {
/* default value */
-cell-background: rgb(34, 139, 34);
}
.cell {
-fx-background-color: -cell-background ;
}
爪哇:
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));