package test; import javafx.application.Application; import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.chart.PieChart; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class PieResize extends Application { @Override public void start(final Stage primaryStage) throws Exception { ObservableList pieChartData = FXCollections.observableArrayList( new PieChart.Data("AAAAAAAAAAAAAAAAAA", 20), new PieChart.Data("BBBBBBBBBBBBB", 12), new PieChart.Data("CCCCCCCCCCCCCCCCCCCC", 25), new PieChart.Data("DDDDDDDDDDDDD", 22), new PieChart.Data("EEEEEEEEEEEEEEEE", 30), new PieChart.Data("FFFFFFFFFFFFFFF", 5), new PieChart.Data("GGGGGGGGGG", 10), new PieChart.Data("HHHHHHHHHHHHHHHH", 8)); final PieChart chart = new PieChart(pieChartData); final Label label = new Label(); VBox vbox = new VBox(5); vbox.getChildren().addAll(label, chart); vbox.setOnMouseClicked(new EventHandler() { public void handle(MouseEvent me) { primaryStage.setWidth(386); Platform.runLater(new Runnable() { @Override public void run() { chart.requestLayout(); } }); } }); vbox.widthProperty().addListener(new ChangeListener() { public void changed(ObservableValue observable, Number oldValue, Number newValue) { label.setText(newValue.toString()); } }); primaryStage.setScene(new Scene(vbox)); primaryStage.show(); } public static void main(String[] args) { launch(args); } }