Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
ensemble.samples.charts.candlestick.CandleStickChartApp Maven / Gradle / Ivy
/*
* Copyright (c) 2008, 2015, Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the distribution.
* - Neither the name of Oracle Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ensemble.samples.charts.candlestick;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
/**
* A custom candlestick chart. This sample shows how to extend XYChart base class
* to create your own two axis chart type.
*
* @sampleName Candle Stick Chart
* @preview preview.png
* @see javafx.scene.chart.NumberAxis
* @see javafx.scene.chart.XYChart
* @docUrl https://docs.oracle.com/javafx/2/charts/jfxpub-charts.htm Using JavaFX Charts Tutorial
* @related /Charts/Scatter/Scatter Chart
* @related /Charts/Scatter/Advanced Scatter Chart
* @highlight
* @playground chart.data
* @playground - (name="xAxis")
* @playground xAxis.autoRanging
* @playground xAxis.forceZeroInRange
* @playground xAxis.lowerBound (min=-100,max=100,step=1)
* @playground xAxis.upperBound (step=1)
* @playground xAxis.tickUnit (step=0.5)
* @playground xAxis.minorTickCount (max=16)
* @playground xAxis.minorTickLength (max=15)
* @playground xAxis.minorTickVisible
* @playground xAxis.animated
* @playground xAxis.label
* @playground xAxis.side
* @playground xAxis.tickLabelFill
* @playground xAxis.tickLabelGap
* @playground xAxis.tickLabelRotation (min=-180,max=180,step=1)
* @playground xAxis.tickLabelsVisible
* @playground xAxis.tickLength
* @playground xAxis.tickMarkVisible
* @playground - (name="yAxis")
* @playground yAxis.autoRanging
* @playground yAxis.forceZeroInRange
* @playground yAxis.lowerBound (min=-100,max=30,step=1)
* @playground yAxis.upperBound (step=1)
* @playground yAxis.tickUnit (step=0.5)
* @playground yAxis.minorTickCount (max=16)
* @playground yAxis.minorTickLength (max=15)
* @playground yAxis.minorTickVisible
* @playground yAxis.animated
* @playground yAxis.label
* @playground yAxis.side
* @playground yAxis.tickLabelFill
* @playground yAxis.tickLabelGap
* @playground yAxis.tickLabelRotation (min=-180,max=180,step=1)
* @playground yAxis.tickLabelsVisible
* @playground yAxis.tickLength
* @playground yAxis.tickMarkVisible
* @playground - (name="chart")
* @playground chart.horizontalGridLinesVisible
* @playground chart.horizontalZeroLineVisible
* @playground chart.verticalGridLinesVisible
* @playground chart.verticalZeroLineVisible
* @playground chart.animated
* @playground chart.legendSide
* @playground chart.legendVisible
* @playground chart.title
* @playground chart.titleSide
*/
public class CandleStickChartApp extends Application {
// DAY, OPEN, CLOSE, HIGH, LOW, AVERAGE
private static double[][] data = new double[][]{
{1, 25, 20, 32, 16, 20},
{2, 26, 30, 33, 22, 25},
{3, 30, 38, 40, 20, 32},
{4, 24, 30, 34, 22, 30},
{5, 26, 36, 40, 24, 32},
{6, 28, 38, 45, 25, 34},
{7, 36, 30, 44, 28, 39},
{8, 30, 18, 36, 16, 31},
{9, 40, 50, 52, 36, 41},
{10, 30, 34, 38, 28, 36},
{11, 24, 12, 30, 8, 32.4},
{12, 28, 40, 46, 25, 31.6},
{13, 28, 18, 36, 14, 32.6},
{14, 38, 30, 40, 26, 30.6},
{15, 28, 33, 40, 28, 30.6},
{16, 25, 10, 32, 6, 30.1},
{17, 26, 30, 42, 18, 27.3},
{18, 20, 18, 30, 10, 21.9},
{19, 20, 10, 30, 5, 21.9},
{20, 26, 16, 32, 10, 17.9},
{21, 38, 40, 44, 32, 18.9},
{22, 26, 40, 41, 12, 18.9},
{23, 30, 18, 34, 10, 18.9},
{24, 12, 23, 26, 12, 18.2},
{25, 30, 40, 45, 16, 18.9},
{26, 25, 35, 38, 20, 21.4},
{27, 24, 12, 30, 8, 19.6},
{28, 23, 44, 46, 15, 22.2},
{29, 28, 18, 30, 12, 23},
{30, 28, 18, 30, 12, 23.2},
{31, 28, 18, 30, 12, 22}
};
private CandleStickChart chart;
private NumberAxis xAxis;
private NumberAxis yAxis;
public Parent createContent() {
xAxis = new NumberAxis(0,32,1);
xAxis.setMinorTickCount(0);
yAxis = new NumberAxis();
chart = new CandleStickChart(xAxis,yAxis);
// setup chart
xAxis.setLabel("Day");
yAxis.setLabel("Price");
// add starting data
XYChart.Series series = new XYChart.Series();
for (int i=0; i< data.length; i++) {
double[] day = data[i];
series.getData().add(
new XYChart.Data(day[0],day[1],new CandleStickExtraValues(day[2],day[3],day[4],day[5]))
);
}
ObservableList> data = chart.getData();
if (data == null) {
data = FXCollections.observableArrayList(series);
chart.setData(data);
} else {
chart.getData().add(series);
}
return chart;
}
@Override public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(createContent()));
primaryStage.show();
}
/**
* Java main for when running without JavaFX launcher
* @param args command line arguments
*/
public static void main(String[] args) { launch(args); }
}