2016-08-21 6 views
0

png로 저장 한 선 차트의 크기를 제어하는 ​​방법을 알 수 없습니다. 차트는 화면에서 멋지게 보입니다. 자체 창에서는 표시되지만 저장하면 세로로 스크롤됩니다. 나는 크기를 제어하는 ​​방법을 알아 내려고 노력했지만 아무 소용이 없습니다. 간단한 설정이어야하지만 ...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