单击时更改javafx按钮颜色?

时间:2016-10-02 19:32:10

标签: javafx javafx-2 javafx-8

我知道我可以使用按下的伪选择器设置颜色:

myButton:pressed{}

问题是,我尝试通过执行以下操作来覆盖样式表中的css背景颜色,从而尝试在代码中执行此操作:

myButton.setStyle("fx-background-color: #FFF");

后者失败确实改变了颜色。可能是因为一旦我设置我的样式表,我不能覆盖它?如何在点击时更改按钮颜色?

2 个答案:

答案 0 :(得分:5)

我必须做类似的事情(这里简化了,只有部分代码将样式更改为按钮)我做了这个,我希望它会对你有所帮助

button.setOnAction((ActionEvent e) -> {
    button.getStyleClass().removeAll("addBobOk, focus"); 
    //In this way you're sure you have no styles applied to your object button
    button.getStyleClass().add("addBobOk");
    //then you specify the class you would give to the button
});

CSS:

.addBobOk{
        -fx-background-color:#90EE90;
        -fx-background-radius: 5,5,4;
        -fx-background-insets: 0 0 -1 0,0,1;
        -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.4) , 5, 0.0 , 0 , 1 );
        -fx-text-alignment: center;
}
.addBobOk:hover{

        -fx-background-color:#64EE64;
        -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.4) , 5, 0.0 , 0 , 1 );
        -fx-text-alignment: center;
}
.busy{

        -fx-background-color:#B3B3B3; 
        -fx-text-alignment: center;
}
.busy:hover{

        -fx-background-color:cdcbcb;                       
        -fx-text-alignment: center;
}

答案 1 :(得分:1)

lifetime is extended显示按钮的一些适用样式。

“ fx-background-color”只是一个错字。它必须是“ -fx-background-color”。

要使用样式,您需要获取正确的样式名称和值,并使用semicola将其分开。以下方法可以系统地完成此任务:

  String bstyle=String.format("-fx-text-fill: %s;-fx-fill: %s;-fx-background-color: %s;",textFill,fill, bgColor);
  button.setStyle(bstyle);