JavaFX I want to save Chart-Image completely

This is my code:

public class SceneToImageAndWrite extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { stage.setTitle("Primary Stage"); final CategoryAxis xAxis = new CategoryAxis(); xAxis.setLabel("Animals"); final NumberAxis yAxis = new NumberAxis(); yAxis.setLabel("Number"); final LineChart<String, Number> lineChart = new LineChart<String, Number>(xAxis, yAxis); lineChart.setTitle("Line Chart"); XYChart.Series<String, Number> series1 = new Series<String, Number>(); series1.setName("Series"); /** xAxis & yAxis Data */ LinkedHashMap<String, Number> map = new LinkedHashMap<>(); map.put("dog", 12); map.put("cat", 3); map.put("bear", 8); map.put("tiger", 20); for (Entry<String, Number> entry : map.entrySet()) { series1.getData().add(new XYChart.Data<String, Number>(entry.getKey(), entry.getValue())); } lineChart.getData().add(series1); Scene scene = new Scene(lineChart); stage.setScene(scene); stage.show(); WritableImage snapShot = scene.snapshot(null); ImageIO.write(SwingFXUtils.fromFXImage(snapShot, null), "png", new File("test.png")); } } 

The frame is excellent, but the saved image does not have all the chart data that it should have. I want to completely save the Chart-Image, what's wrong? ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

+8
javafx charts
source share
1 answer

Turn off the animation on your chart.

From snapshot javadoc:

When you take a snapshot of a scene that is being animated, either explicitly by the application or implicitly (for example, chart animation), the snapshot will be displayed based on the state of the scene graph at the time of taking the snapshot will not affect subsequent changes to the animation.

+18
source share

All Articles