2016-08-21 5 views
0

Ich kann nicht herausfinden, wie man die Größe des in png gespeicherten LineChart steuert. Das Diagramm sieht auf dem Bildschirm in einem eigenen Fenster gut aus, wird aber beim Speichern vertikal komprimiert. Ich habe versucht, herauszufinden, wie man die Größe kontrolliert, aber ohne Erfolg. Es muss eine einfache Einstellung sein, aber ...LineChart JavaFX -saving to png - Wie man die Größe steuert

Jede Hilfe wäre willkommen.

Mit dem folgenden Code, ohne den Code, der den Datenwert enthält:

LineChart<Number, Number> xyChart = new LineChart<>(xAxis, yAxis); 

StackPane layout = new StackPane(); 
layout.setPadding(new Insets(10, 10, 10, 10)); 
xyChart.prefWidthProperty().bind(window.widthProperty()); 
xyChart.prefHeightProperty().bind(window.heightProperty()); 
layout.getChildren().add(xyChart); 

VBox mainVBox = new VBox(); 
mainVBox.getChildren().addAll(menuHBox, layout); 

Scene scene = new Scene(mainVBox, 800, 600); 
window.setScene(scene); 
xyChart.setAnimated(false); 
WritableImage snapShot = scene.snapshot(null); 
try { 
ImageIO.write(SwingFXUtils.fromFXImage(snapShot, null), "png", new File("test3.png")); 
} catch (IOException e) { 
} 

Das Diagramm wie auf dem Bildschirm angezeigt wird window grab

während die PNG-Datei, die geschrieben wird, ist upload of the png file

Antwort

2

Versuchen Sie, das Bild nach zu speichern, das Fenster wird angezeigt, da Layouts und Größen berechnet werden eine erforderliche Basis und möglicherweise nicht die gleichen Werte vor.

Eine andere Lösung wäre natürlich, die bevorzugte Größe des Knotens explizit festzulegen.

Der Grund, warum Bindungen nicht helfen, ist, weil das Fenster selbst die berechnete Größe noch nicht hat, wie bereits gesagt.

+0

Ja, danke, zeigt das Fenster zuerst das Problem gelöst! –

+0

Beachten Sie auch, dass Sie ein Layout mit [parent.applyCss(); parent.layout();] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#applyCss--). – jewelsea

Verwandte Themen