나는 꽤 복잡한 장면 그래프를 가지고있어 크기 조정 문제를 일으켰습니다. 네가 해결하도록 도와 주면 기뻐.JavaFX 자동 크기 조정 그룹
내 루트 노드의 중심이 ListView
인 BorderPane
입니다. ListView
의 각 셀은 다음과 같이 사용자 정의 줌이 ScrollPane
으로 가득 :
public class ZoomableScrollPane extends ScrollPane {
Group zoomGroup;
Scale scaleTransform;
LineChart<Number , Number> content;
double scaleValue = 1.0;
double delta = 0.1;
public ZoomableScrollPane(LineChart<Number , Number> content, double height) {
this.content = content;
this.setPrefHeight(height);
Group contentGroup = new Group();
zoomGroup = new Group();
contentGroup.getChildren().add(zoomGroup);
zoomGroup.getChildren().add(content);
setContent(contentGroup);
scaleTransform = new Scale(scaleValue, scaleValue, 0, 0);
zoomGroup.getTransforms().add(scaleTransform);
}
}
각 ZoomableScrollPane
의 내부 LineChart
이 볼 수 있듯이. 이 차트로 두 가지 일을하고 싶습니다. 첫째, 어떻게하면 창 레이아웃의 경우 원하는 크기의 결과를 얻기 위해 루트 레이아웃에 너비를 바인딩하고 (확대/축소는 문제가되지 않음) 두 번째로 버튼을 누를 때마다 런타임에 차트의 너비를 변경합니다.
public void handleButton(ActionEvent actionEvent) {
MainController.lineChart1.setPrefWidth(MainController.lineChart1.getPrefWidth() + CONSTANT);
}
여기서 문제는 입니다. 그룹 (안 창)의 자식 인 LineChart
원인, 그냥 사이즈 변경의 한 가지 방법을 알고 그 같은 루트 BorderPane
의 수동을 폭을 바인딩 입니다 :
MainController.lineChart1.prefWidthProperty().bind(fourChannels.widthProperty().subtract(40));
그리고이 경우 LineChart
의 너비를 실행 시간으로 변경할 수없고 A bound value cannot be set
예외가 발생합니다.
난 하나의 솔루션을 어떻게 든 수동 바인딩의 필요성을 피하기 위해 ZoomableScrollPane
클래스를 개정 수 있지만 정말 어떻게 해야할지 모르겠다.
이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.
중복 : [JavaFX correct scaling] (http://stackoverflow.com/questions/16680295/javafx-correct-scaling)? – jewelsea
@jewelsea 스케일링에 관한 것이 아닙니다. 자동 크기 조정 그룹을 갖는 방법이나 런타임에 바운드 폭을 늘리는 방법을 모르십시오. –