如何使用API​​将数据插入条形图

时间:2014-02-18 22:10:38

标签: java javafx javafx-2 javafx-8

这个问题与软件设计有关。我想创建可用于更新此条形图的API。这是原始示例http://docs.oracle.com/javafx/2/charts/bar-chart.htm

我测试了这个:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class MainApp extends Application
{


    XYChart.Series series1 = new XYChart.Series();
    XYChart.Series series2 = new XYChart.Series();
    XYChart.Series series3 = new XYChart.Series();

    @Override
    public void start(Stage stage)
    {

        setUserAgentStylesheet(STYLESHEET_CASPIAN);

        stage.setTitle("Bar Chart Sample");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        final BarChart<String, Number> bc = new BarChart<String, Number>(xAxis, yAxis);
        bc.setTitle("Country Summary");
        xAxis.setLabel("Country");
        yAxis.setLabel("Value");

        series1.setName("2003");
//        series1.getData().add(new XYChart.Data(austria, 25601.34));
//        series1.getData().add(new XYChart.Data(brazil, 20148.82));
//        series1.getData().add(new XYChart.Data(france, 10000));
//        series1.getData().add(new XYChart.Data(italy, 35407.15));
//        series1.getData().add(new XYChart.Data(usa, 12000));

        series2.setName("2004");
//        series2.getData().add(new XYChart.Data(austria, 57401.85));
//        series2.getData().add(new XYChart.Data(brazil, 41941.19));
//        series2.getData().add(new XYChart.Data(france, 45263.37));
//        series2.getData().add(new XYChart.Data(italy, 117320.16));
//        series2.getData().add(new XYChart.Data(usa, 14845.27));

        series3.setName("2005");
//        series3.getData().add(new XYChart.Data(austria, 45000.65));
//        series3.getData().add(new XYChart.Data(brazil, 44835.76));
//        series3.getData().add(new XYChart.Data(france, 18722.18));
//        series3.getData().add(new XYChart.Data(italy, 17557.31));
//        series3.getData().add(new XYChart.Data(usa, 92633.68));

        AddBarChartDataSeriesOne("Europe", 23);
        AddBarChartDataSeriesTwo("Asia", 33);
        AddBarChartDataSeriesThree("America", 44);

        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1, series2, series3);
        stage.setScene(scene);
        stage.show();
    }

    public void AddBarChartDataSeriesOne(String Name, float value)
    {
        series1.getData().add(new XYChart.Data(Name, value));
    }

    public void AddBarChartDataSeriesTwo(String Name, float value)
    {
        series2.getData().add(new XYChart.Data(Name, value));
    }

    public void AddBarChartDataSeriesThree(String Name, float value)
    {
        series3.getData().add(new XYChart.Data(Name, value));
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}

正如您所看到的,我无法正确设置数据系列,并且在使用此API时无法设置条形图标签。你能帮忙改进吗?

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你,但这是我尝试这样做的方式:

package javafxstackoverflow;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class JavaFXStackOverflow extends Application {

    XYChart.Series series1 = new XYChart.Series();
    XYChart.Series series2 = new XYChart.Series();
    XYChart.Series series3 = new XYChart.Series();

    @Override
    public void start(Stage stage)
    {
        stage.setTitle("Bar Chart Sample");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        final BarChart<String, Number> bc = new BarChart<String, Number>(xAxis, yAxis);
        bc.setTitle("Country Summary");
        xAxis.setLabel("Country");
        yAxis.setLabel("Value");

        series1.setName("2003");
        series2.setName("2004");
        series3.setName("2005");

        AddBarChartDataSeries(series1, "Europe", 23);
        AddBarChartDataSeries(series1, "Asia", 45);
        AddBarChartDataSeries(series1, "America", 56);

        AddBarChartDataSeries(series2, "Europe", 33);
        AddBarChartDataSeries(series2, "Asia", 28);
        AddBarChartDataSeries(series2, "America", 49);

        AddBarChartDataSeries(series3, "Europe", 53);
        AddBarChartDataSeries(series3, "Asia", 43);
        AddBarChartDataSeries(series3, "America", 59);

        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1, series2, series3);
        stage.setScene(scene);
        stage.show();
    }

    public void AddBarChartDataSeries(XYChart.Series serie, String name, float value)
    {
        serie.getData().add(new XYChart.Data(name, value));
    }

    public static void main(String[] args)
    {
        launch(args);
    }

}

我刚刚将系列作为参数添加到您的函数中。 如果我弄错了,请更详细地解释一下你的问题。