import com.sun.javafx.runtime.VersionInfo; import javafx.application.Application; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.event.EventTarget; import javafx.scene.Scene; import javafx.scene.chart.AreaChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.StackedAreaChart; import javafx.scene.chart.XYChart; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class ChartSample extends Application { private AreaChart ac = new AreaChart(new NumberAxis(1, 31, 1), new NumberAxis());; private StackedAreaChart sac = new StackedAreaChart(new NumberAxis(1, 31, 1), new NumberAxis()); private XYChart.Series extraACSeries; private XYChart.Series extraSACSeries; private Button btnAddToAC = new Button("Add July series to area chart"); private Button btnAddToSAC = new Button("Add July series to stacked area chart"); private Button btnRemoveAC = new Button("Remove July series from area chart"); private Button btnRemoveSAC = new Button("Remove July series from stacked area chart"); private Button removeLast = new Button("Remove last series"); private Button reset = new Button("Reset"); private Button changeStyle = new Button("Change style"); @Override public void start(Stage stage) { setUserAgentStylesheet(STYLESHEET_MODENA); stage.setTitle("Chart Sample: " + VersionInfo.getRuntimeVersion()); initControls(); setControlsSize(); Scene scene = new Scene(new VBox(3, new HBox(5, ac, sac), btnAddToAC, btnAddToSAC, btnRemoveAC, btnRemoveSAC, removeLast, reset, changeStyle),1200,600); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } private void setChartData(XYChart chart) { chart.setTitle("Temperature Monitoring (in Degrees C)"); XYChart.Series seriesApril= new XYChart.Series(); seriesApril.setName("April"); seriesApril.getData().add(new XYChart.Data(1, 4)); seriesApril.getData().add(new XYChart.Data(3, 10)); seriesApril.getData().add(new XYChart.Data(6, 15)); seriesApril.getData().add(new XYChart.Data(9, 8)); seriesApril.getData().add(new XYChart.Data(12, 5)); seriesApril.getData().add(new XYChart.Data(15, 18)); seriesApril.getData().add(new XYChart.Data(18, 15)); seriesApril.getData().add(new XYChart.Data(21, 13)); seriesApril.getData().add(new XYChart.Data(24, 19)); seriesApril.getData().add(new XYChart.Data(27, 21)); seriesApril.getData().add(new XYChart.Data(30, 21)); XYChart.Series seriesMay = new XYChart.Series(); seriesMay.setName("May"); seriesMay.getData().add(new XYChart.Data(1, 20)); seriesMay.getData().add(new XYChart.Data(3, 15)); seriesMay.getData().add(new XYChart.Data(6, 13)); seriesMay.getData().add(new XYChart.Data(9, 12)); seriesMay.getData().add(new XYChart.Data(12, 14)); seriesMay.getData().add(new XYChart.Data(15, 18)); seriesMay.getData().add(new XYChart.Data(18, 25)); seriesMay.getData().add(new XYChart.Data(21, 25)); seriesMay.getData().add(new XYChart.Data(24, 23)); seriesMay.getData().add(new XYChart.Data(27, 26)); seriesMay.getData().add(new XYChart.Data(31, 26)); extraACSeries = new XYChart.Series(); extraACSeries.setName("July"); extraACSeries.getData().add(new XYChart.Data(1, 30)); extraACSeries.getData().add(new XYChart.Data(3, 25)); extraACSeries.getData().add(new XYChart.Data(6, 23)); extraACSeries.getData().add(new XYChart.Data(9, 22)); extraACSeries.getData().add(new XYChart.Data(12, 24)); extraACSeries.getData().add(new XYChart.Data(15, 28)); extraACSeries.getData().add(new XYChart.Data(18, 35)); extraACSeries.getData().add(new XYChart.Data(21, 35)); extraACSeries.getData().add(new XYChart.Data(24, 33)); extraACSeries.getData().add(new XYChart.Data(27, 36)); extraACSeries.getData().add(new XYChart.Data(31, 36)); extraSACSeries = new XYChart.Series(); extraSACSeries.setName("July"); extraSACSeries.getData().add(new XYChart.Data(1, 30)); extraSACSeries.getData().add(new XYChart.Data(3, 25)); extraSACSeries.getData().add(new XYChart.Data(6, 23)); extraSACSeries.getData().add(new XYChart.Data(9, 22)); extraSACSeries.getData().add(new XYChart.Data(12, 24)); extraSACSeries.getData().add(new XYChart.Data(15, 28)); extraSACSeries.getData().add(new XYChart.Data(18, 35)); extraSACSeries.getData().add(new XYChart.Data(21, 35)); extraSACSeries.getData().add(new XYChart.Data(24, 33)); extraSACSeries.getData().add(new XYChart.Data(27, 36)); extraSACSeries.getData().add(new XYChart.Data(31, 36)); chart.getData().clear(); chart.getData().addAll(seriesApril, seriesMay); } private void setControlsSize() { ac.setMaxSize(550, 600); ac.setPrefSize(500, 600); sac.setMaxSize(550, 600); sac.setPrefSize(500, 600); final int btnWidth = 265; btnAddToAC.setMaxWidth(btnWidth); btnAddToSAC.setMaxWidth(btnWidth); btnRemoveAC.setMaxWidth(btnWidth); btnRemoveSAC.setMaxWidth(btnWidth); removeLast.setMaxWidth(btnWidth); reset.setMaxWidth(btnWidth); changeStyle.setMaxWidth(btnWidth); } private void attachHandlers() { btnAddToAC.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { ac.getData().add(extraACSeries); } }); } }); btnAddToSAC.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { sac.getData().add(extraSACSeries); } }); } }); btnRemoveAC.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { ac.getData().remove(extraACSeries); } }); } }); btnRemoveSAC.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { sac.getData().remove(extraSACSeries); } }); } }); removeLast.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { int size = ac.getData().size(); if (size > 0) { ac.getData().remove(size - 1); } size = sac.getData().size(); if (size > 0) { sac.getData().remove(size - 1); } } }); } }); reset.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable() { @Override public void run() { initControls(); } }); } }); changeStyle.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { if (getUserAgentStylesheet() == STYLESHEET_MODENA) { setUserAgentStylesheet(STYLESHEET_CASPIAN); } else { setUserAgentStylesheet(STYLESHEET_MODENA); } } }); } private void initControls() { setChartData(ac); setChartData(sac); attachHandlers(); } }