2016-08-21 15 views
0

pngに保存されたLineChartのサイズを制御する方法がわかりません。チャートは画面上で、自分のウィンドウではすばらしいように見えますが、保存すると縦にスクランチされます。私はどのようにサイズを制御するかを考えようとしましたが、役に立たない。それは簡単な設定でなければなりませんが、...LineChart JavaFX - pngに保存 - サイズを制御する方法

助けていただければ幸いです。書き込まれるPNGファイルは

upload of the png fileある一方

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) { 
} 

画面上に表示されるチャートは window grab

ある:データ値を設定するコードを除く次のコードで

答えて

2

の後にの画像を保存してみてください。レイアウトとサイズが計算されるため、ウィンドウが表示されます。必要な基準を満たしていない場合があります。

もちろん、ノードの推奨サイズを明示的に設定することもできます。

xyChart.setPrefWidth(...); 
xyChart.setPrefHeight(...); 

バインディングが助けにならないのは、前述のように、ウィンドウ自体に計算されたサイズがないためです。

+0

はい、ありがとうございます。ウィンドウを表示すると、まず問題が解決しました。 –

+0

[parent.applyCss();を使用して手動でレイアウトをトリガーすることもできます。 parent.layout();](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#applyCss--)。 – jewelsea

関連する問題