Java Fx Userchoosen color CSS

时间:2016-11-12 20:24:32

标签: java css javafx

我构建了一个基于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中使用变量或类似的东西?

1 个答案:

答案 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));