JavaFX example to capture screen/GUI nodes

JavaFX example to capture screen/GUI nodes:

package javafxcapturescreen;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.SnapshotParameters;
import javafx.scene.control.Button;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javax.imageio.ImageIO;

/**
*
* @web http://java-buddy.blogspot.com/
*/
public class JavaFXCaptureScreen extends Application {

@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 250);

Button btnCaptureScene = new Button();
btnCaptureScene.setText("Capture scene");
btnCaptureScene.setOnAction((ActionEvent event) -> {

WritableImage writableImage = scene.snapshot(null);
File file = new File("capturedScene.png");
try {
ImageIO.write(SwingFXUtils.fromFXImage(writableImage, null), "png", file);
System.out.println("Captured: " + file.getAbsolutePath());
} catch (IOException ex) {
Logger.getLogger(JavaFXCaptureScreen.class.getName()).log(Level.SEVERE, null, ex);
}
});

Button btnCaptureRoot = new Button();
btnCaptureRoot.setText("Capture root");
btnCaptureRoot.setOnAction((ActionEvent event) -> {
WritableImage writableImage = root.snapshot(new SnapshotParameters(), null);

File file = new File("capturedRoot.png");
try {
ImageIO.write(SwingFXUtils.fromFXImage(writableImage, null), "png", file);
System.out.println("Captured: " + file.getAbsolutePath());
} catch (IOException ex) {
Logger.getLogger(JavaFXCaptureScreen.class.getName()).log(Level.SEVERE, null, ex);
}
});

VBox vBox = new VBox();
vBox.getChildren().addAll(btnCaptureScene, btnCaptureRoot);
root.getChildren().add(vBox);

primaryStage.setTitle("java-buddy.blogspot.com");
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}

}

capturedScene.png

capturedRoot.png


Source: http://java-buddy.blogspot.com/