如何计算javafx中css外观的效果?

时间:2015-03-29 09:57:02

标签: css javafx

是否可以为CSS中描述的效果提供时间?

所以我想要的是,如果你按一个按钮,那么它的外观变化会持续一段时间,甚至会在发布后稍微改变一下。

所以我想象.button:pressed{}部分中的某种命令,这使得这成为可能。

或者如果它只能在java代码中使用,那也很好! 你有好主意吗?谢谢!

例如:

.button:hover:pressed {
-fx-background-color: #A6C3F1;
-fx-background-radius: 30;
-fx-text-fill: black;
//pseudo: -fx-pressed-lasts: 300 (milisec);

因此,如果你按住按钮,当你按住按钮时,按钮就会有这种颜色。即使在释放鼠标点击之后我也希望这种颜色长300毫秒。然后它会变回.button:hover{ - whatever -}

1 个答案:

答案 0 :(得分:2)

Imo在css中是不可能的。在Java代码中,您可以使用

@Override
public void start( Stage primaryStage )
{
    final Button btn = new Button( "Say 'Hello World'" );
    final PauseTransition pt = new PauseTransition( Duration.millis( 3000 ) );
    pt.setOnFinished( ( ActionEvent event ) ->
    {
        btn.getStyleClass().remove( "my-button-pressed" );
    } );

    btn.setOnMousePressed( ( MouseEvent event ) ->
    {
        if ( pt.getStatus() != Animation.Status.RUNNING )
        {
            btn.getStyleClass().add( "my-button-pressed" );
            pt.play();
        }
    } );

    StackPane root = new StackPane();
    root.getChildren().add( btn );

    Scene scene = new Scene( root, 300, 250 );
    scene.getStylesheets().add( this.getClass().getResource( "style.css" ).toExternalForm() );
    primaryStage.setScene( scene );
    primaryStage.show();
}

与style.css类似

.my-button-pressed {
    -fx-font: 16px "Serif";
    -fx-padding: 10;
    -fx-background-color: #CCFF99;
}