У меня довольно сложный график сцены, который привел меня к некоторым проблемам с изменением размера. Я был бы рад, если бы вы помогли мне решить эту проблему.JavaFX Auto Resizing Group
Мой корневой узел является BorderPane
, что его центр заполнен ListView
. Каждая ячейка 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);
}
}
Как вы можете видеть, что есть LineChart
внутри каждого ZoomableScrollPane
. Я хочу сделать две вещи с этой диаграммой. Во-первых, чтобы каким-то образом связать свою ширину с корневой компоновкой, чтобы получить желаемый результат в случае изменения размера окна (без масштабирования, масштабирования в порядке), а во-вторых, чтобы изменить ширину диаграммы во время выполнения при нажатии кнопки:
public void handleButton(ActionEvent actionEvent) {
MainController.lineChart1.setPrefWidth(MainController.lineChart1.getPrefWidth() + CONSTANT);
}
Проблема в том, что здесь я столкнулся с конфликтом . Вызываю LineChart
является ребенком из группы (не панели), я просто знаю один способ Изменяемости размеров и что связать свою ширину вручную с корневыми BorderPane
«s, как это:
MainController.lineChart1.prefWidthProperty().bind(fourChannels.widthProperty().subtract(40));
И в этом случае я не могу изменить ширину LineChart
на времени выполнения и получит A bound value cannot be set
Исключение.
Я предполагаю, что одно решение может пересмотреть класс ZoomableScrollPane
, чтобы как-то избежать необходимости ручной привязки, но на самом деле понятия не имею, как это сделать.
Любая помощь в этом была бы принята с благодарностью.
Дубликат: [правильное масштабирование JavaFX] (http://stackoverflow.com/questions/16680295/javafx-correct-scaling)? – jewelsea
@jewelsea Речь идет не о масштабировании. Просто не знаю, как иметь группу автоматического изменения размера или как увеличить ширину привязки во время выполнения. –