PaintingColors.javaimport javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.*;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import java.util.function.Consumer;
/**
* Painting Colors
* @author cdea
*/
public class PaintingColors extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Painting Colors");
Group root = new Group();
Scene scene = new Scene(root, 350, 300, Color.WHITE);
// Red ellipse with radial gradient color
Ellipse ellipse = new Ellipse(100, // center X
50 + 70/2, /* center Y */
50, /* radius X */
70/2); /* radius Y */
RadialGradient gradient1 = new RadialGradient(
0, /* focusAngle */
.1, /* focusDistance */
80, /* centerX */
45, /* centerY */
120, /* radius */
false, /* proportional */
CycleMethod.NO_CYCLE, /* cycleMethod */
new Stop(0, Color.RED), /* stops */
new Stop(1, Color.BLACK)
);
ellipse.setFill(gradient1);
root.getChildren().add(ellipse);
double ellipseHeight = ellipse.getBoundsInParent()
.getHeight();
// thick black line behind second shape
Line blackLine = new Line();
blackLine.setStartX(170);
blackLine.setStartY(30);
blackLine.setEndX(20);
blackLine.setEndY(140);
blackLine.setFill(Color.BLACK);
blackLine.setStrokeWidth(10.0f);
blackLine.setTranslateY(ellipseHeight + 10);
root.getChildren().add(blackLine);
// A rectangle filled with a linear gradient with a translucent color.
Rectangle rectangle = new Rectangle();
rectangle.setX(50);
rectangle.setY(50);
rectangle.setWidth(100);
rectangle.setHeight(70);
rectangle.setTranslateY(ellipseHeight + 10);
LinearGradient linearGrad = new LinearGradient(
0, /* start X */
0, /* start Y */
0, /* end X */
1, /* end Y */
true, /* proportional */
CycleMethod.NO_CYCLE, /* cycle colors stops */
new Stop(0.1f, Color.rgb(255, 200, 0, .784)),
new Stop(1.0f, Color.rgb(0, 0, 0, .784)));
rectangle.setFill(linearGrad);
root.getChildren().add(rectangle);
// A rectangle filled with a linear gradient with a reflective cycle.
Rectangle roundRect = new Rectangle();
roundRect.setX(50);
roundRect.setY(50);
roundRect.setWidth(100);
roundRect.setHeight(70);
roundRect.setArcWidth(20);
roundRect.setArcHeight(20);
roundRect.setTranslateY(ellipseHeight + 10 +
rectangle.getHeight() + 10);
LinearGradient cycleGrad = new LinearGradient(
50, /* start X */
50, /* start Y */
70, /* end X */
70, /* end Y */
false, /* proportional */
CycleMethod.REFLECT, /* cycleMethod */
new Stop(0f, Color.rgb(0, 255, 0, .784)),
new Stop(1.0f, Color.rgb(0, 0, 0, .784))
);
roundRect.setFill(cycleGrad);
root.getChildren().add(roundRect);
primaryStage.setScene(scene);
primaryStage.show();
Consumer<Integer> r = System.out::println;
}
}
Maintained by John Loomis, updated Fri Feb 09 12:42:51 2018