JDK-8092890 : ProgressIndicator: indeterminate state has white background in Java 8 upate 40
  • Type: Bug
  • Component: javafx
  • Sub-Component: controls
  • Affected Version: 8u40
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2014-09-04
  • Updated: 2015-06-12
  • Resolved: 2014-09-04
Related Reports
Duplicate :  
Description
I have just downloaded the Java 8 update 40  (b04)  binary for Windows 64 ,  I'm seeing progress indicators in interderminate mode have a white background. This is a regression, it's visible in the ProgressIndicator demo as part of the JavaFX ensemble.


To Reproduce Simply run this this demo Ensemble example code below.  You'll see under Java 8 update 20, it renders as expected, under Java 8 update 40 (b04) the interdiminate indicator has white background.



import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.util.Duration;

/**
 * A sample that demonstrates the Progress Indicator control in various modes.
 */
public class ProgressIndicatorApp extends Application {
    final Timeline timeline = new Timeline();

    public Parent createContent() {
        GridPane gridPane = new GridPane();

        ProgressIndicator p1 = new ProgressIndicator();
        p1.setPrefSize(50, 50);

        ProgressIndicator p2 = new ProgressIndicator();
        p2.setPrefSize(50, 50);
        p2.setProgress(0.25F);

        ProgressIndicator p3 = new ProgressIndicator();
        p3.setPrefSize(50, 50);
        p3.setProgress(0.5F);

        ProgressIndicator p4 = new ProgressIndicator();
        p4.setPrefSize(50, 50);
        p4.setProgress(1.0F);

        // styled ProgressIndicator
        final ProgressIndicator p5 = new ProgressIndicator();
        p5.setPrefSize(100, 100);
        p5.styleProperty().bind(Bindings.createStringBinding(
                () -> {
                    final double percent = p5.getProgress();
                    if (percent < 0) return null; // progress bar went indeterminate
                    //
                    // poor man's gradient for stops: red, yellow 50%, green
                    // Based on http://en.wikibooks.org/wiki/Color_Theory/Color_gradient#Linear_RGB_gradient_with_6_segments
                    //
                    final double m = (2d * percent);
                    final int n = (int) m;
                    final double f = m - n;
                    final int t = (int) (255 * f);
                    int r = 0, g = 0, b = 0;
                    switch (n) {
                        case 0:
                            r = 255;
                            g = t;
                            b = 0;
                            break;
                        case 1:
                            r = 255 - t;
                            g = 255;
                            b = 0;
                            break;
                        case 2:
                            r = 0;
                            g = 255;
                            b = 0;
                            break;

                    }
                    final String style = String.format("-fx-progress-color: rgb(%d,%d,%d)", r, g, b);
                    return style;
                },
                p5.progressProperty()
        ));
        // animate the styled ProgressIndicator
        timeline.setCycleCount(Timeline.INDEFINITE);
        timeline.setAutoReverse(true);
        final KeyValue kv0 = new KeyValue(p5.progressProperty(), 0);
        final KeyValue kv1 = new KeyValue(p5.progressProperty(), 1);
        final KeyFrame kf0 = new KeyFrame(Duration.ZERO, kv0);
        final KeyFrame kf1 = new KeyFrame(Duration.millis(3000), kv1);
        timeline.getKeyFrames().addAll(kf0, kf1);

        gridPane.add(p1, 1, 0);
        gridPane.add(p2, 0, 1);
        gridPane.add(p3, 1, 1);
        gridPane.add(p4, 2, 1);
        gridPane.add(p5, 1, 2);

        gridPane.setHgap(20);
        gridPane.setVgap(20);
        gridPane.setAlignment(Pos.CENTER);
        return gridPane;
    }

    public void play() {
        timeline.play();
    }

    @Override
    public void stop() {
        timeline.stop();
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setScene(new Scene(createContent()));
        primaryStage.show();
        play();
    }

    /**
     * Java main for when running without JavaFX launcher
     */
    public static void main(String[] args) {
        launch(args);
    }



Comments
This is a duplicate of RT-37965
04-09-2014