Javafx 在条形图中居中

Javafx 在条形图中居中,javafx,bar-chart,Javafx,Bar Chart,我修改了Oracle网站的条形图示例,并将每个系列的条形图减少到1个。不幸的是,这些条没有居中于刻度线之上 有人知道如何使这些条在刻度线上方水平居中吗 代码如下: public class BarChartDemo extends Application { final static String austria = "Austria"; final static String brazil = "Brazil"; final static String france =

我修改了Oracle网站的条形图示例,并将每个系列的条形图减少到1个。不幸的是,这些条没有居中于刻度线之上

有人知道如何使这些条在刻度线上方水平居中吗

代码如下:

public class BarChartDemo extends Application {
    final static String austria = "Austria";
    final static String brazil = "Brazil";
    final static String france = "France";

    @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");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2003");
        series1.getData().add(new XYChart.Data(austria, 25601.34));

        XYChart.Series series2 = new XYChart.Series();
        series2.setName("2004");
        series2.getData().add(new XYChart.Data(brazil, 41941.19));

        XYChart.Series series3 = new XYChart.Series();
        series3.setName("2005");
        series3.getData().add(new XYChart.Data(france, 18722.18));

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

    public static void main(String[] args) {
        launch(args);
    }
}
公共类BarChartDemo扩展应用程序{
最终静态字符串austria=“austria”;
最终静态字符串巴西=“巴西”;
最终静态字符串france=“france”;
@凌驾
公众假期开始(阶段){
阶段。设置标题(“条形图样本”);
最终CategoryAxis xAxis=新CategoryAxis();
最终数字axis yAxis=新数字axis();
最终条形图bc=新条形图(xAxis,yAxis);
bc.setTitle(“国家概要”);
xAxis.setLabel(“国家”);
yAxis.setLabel(“值”);
XYChart.Series系列1=新的XYChart.Series();
系列1.集合名称(“2003”);
series1.getData().add(新的XYChart.Data(奥地利,25601.34));
XYChart.Series系列2=新的XYChart.Series();
序列2.集合名称(“2004”);
series2.getData().add(新的XYChart.Data(巴西,41941.19));
XYChart.Series系列3=新的XYChart.Series();
系列3.集合名称(“2005”);
series3.getData().add(新的XYChart.Data(法国,18722.18));
场景=新场景(bc,800600);
bc.getData().addAll(系列1、系列2、系列3);
舞台场景;
stage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
这就是它的样子:


多谢各位

问题

条形图的问题在于,您添加了3个系列,但每个系列中只有一个国家。条形图本身为其他两个系列留出了空间

解决方案

实现这一点的正确方法是使用one
XYChart.Series
和更高版本,为每个条形图添加颜色。下面是一个示例应用程序,它也执行相同的操作

public class BarChartDemo extends Application {
    final static String austria = "Austria";
    final static String brazil = "Brazil";
    final static String france = "France";

    @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");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2003");
        final XYChart.Data<String, Number> dataAustria = new XYChart.Data(austria, 25601.34);
        final XYChart.Data<String, Number> dataBrazil = new XYChart.Data(brazil, 41941.19);
        final XYChart.Data<String, Number> dataFrance = new XYChart.Data(france, 35000.19);
        series1.getData().add(dataAustria);
        series1.getData().add(dataBrazil);
        series1.getData().add(dataFrance);
        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1);
        stage.setScene(scene);
        stage.show();
        dataAustria.getNode().setStyle("-fx-bar-fill: CHART_COLOR_1;");
        dataBrazil.getNode().setStyle("-fx-bar-fill: CHART_COLOR_2;");
        dataFrance.getNode().setStyle("-fx-bar-fill: CHART_COLOR_3;");
    }

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

问题

条形图的问题在于,您添加了3个系列,但每个系列中只有一个国家。条形图本身为其他两个系列留出了空间

解决方案

实现这一点的正确方法是使用one
XYChart.Series
和更高版本,为每个条形图添加颜色。下面是一个示例应用程序,它也执行相同的操作

public class BarChartDemo extends Application {
    final static String austria = "Austria";
    final static String brazil = "Brazil";
    final static String france = "France";

    @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");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2003");
        final XYChart.Data<String, Number> dataAustria = new XYChart.Data(austria, 25601.34);
        final XYChart.Data<String, Number> dataBrazil = new XYChart.Data(brazil, 41941.19);
        final XYChart.Data<String, Number> dataFrance = new XYChart.Data(france, 35000.19);
        series1.getData().add(dataAustria);
        series1.getData().add(dataBrazil);
        series1.getData().add(dataFrance);
        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1);
        stage.setScene(scene);
        stage.show();
        dataAustria.getNode().setStyle("-fx-bar-fill: CHART_COLOR_1;");
        dataBrazil.getNode().setStyle("-fx-bar-fill: CHART_COLOR_2;");
        dataFrance.getNode().setStyle("-fx-bar-fill: CHART_COLOR_3;");
    }

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

问题

条形图的问题在于,您添加了3个系列,但每个系列中只有一个国家。条形图本身为其他两个系列留出了空间

解决方案

实现这一点的正确方法是使用one
XYChart.Series
和更高版本,为每个条形图添加颜色。下面是一个示例应用程序,它也执行相同的操作

public class BarChartDemo extends Application {
    final static String austria = "Austria";
    final static String brazil = "Brazil";
    final static String france = "France";

    @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");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2003");
        final XYChart.Data<String, Number> dataAustria = new XYChart.Data(austria, 25601.34);
        final XYChart.Data<String, Number> dataBrazil = new XYChart.Data(brazil, 41941.19);
        final XYChart.Data<String, Number> dataFrance = new XYChart.Data(france, 35000.19);
        series1.getData().add(dataAustria);
        series1.getData().add(dataBrazil);
        series1.getData().add(dataFrance);
        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1);
        stage.setScene(scene);
        stage.show();
        dataAustria.getNode().setStyle("-fx-bar-fill: CHART_COLOR_1;");
        dataBrazil.getNode().setStyle("-fx-bar-fill: CHART_COLOR_2;");
        dataFrance.getNode().setStyle("-fx-bar-fill: CHART_COLOR_3;");
    }

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

问题

条形图的问题在于,您添加了3个系列,但每个系列中只有一个国家。条形图本身为其他两个系列留出了空间

解决方案

实现这一点的正确方法是使用one
XYChart.Series
和更高版本,为每个条形图添加颜色。下面是一个示例应用程序,它也执行相同的操作

public class BarChartDemo extends Application {
    final static String austria = "Austria";
    final static String brazil = "Brazil";
    final static String france = "France";

    @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");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2003");
        final XYChart.Data<String, Number> dataAustria = new XYChart.Data(austria, 25601.34);
        final XYChart.Data<String, Number> dataBrazil = new XYChart.Data(brazil, 41941.19);
        final XYChart.Data<String, Number> dataFrance = new XYChart.Data(france, 35000.19);
        series1.getData().add(dataAustria);
        series1.getData().add(dataBrazil);
        series1.getData().add(dataFrance);
        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1);
        stage.setScene(scene);
        stage.show();
        dataAustria.getNode().setStyle("-fx-bar-fill: CHART_COLOR_1;");
        dataBrazil.getNode().setStyle("-fx-bar-fill: CHART_COLOR_2;");
        dataFrance.getNode().setStyle("-fx-bar-fill: CHART_COLOR_3;");
    }

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


为什么你们的每个系列只有一个国家和它的价值?我只想显示不同的条形图。我不想把他们分组。你想要同一年不同国家的不同酒吧吗?实际上我想要多个不同颜色的酒吧。另一个解决方案是带有更改侦听器的StackedBarChart。但不是这样,我认为横杆应该居中。即使我添加了更多,那么条形图也不会以记号为中心,就像在这里的第一个屏幕截图中看到的:为什么你的每个系列都只有一个国家和它的价值?我只想显示不同的条形图。我不想把他们分组。你想要同一年不同国家的不同酒吧吗?实际上我想要多个不同颜色的酒吧。另一个解决方案是带有更改侦听器的StackedBarChart。但不是这样,我认为横杆应该居中。即使我添加了更多,那么条形图也不会以记号为中心,就像在这里的第一个屏幕截图中看到的:为什么你的每个系列都只有一个国家和它的价值?我只想显示不同的条形图。我不想把他们分组。你想要同一年不同国家的不同酒吧吗?实际上我想要多个不同颜色的酒吧。另一个解决方案是带有更改侦听器的StackedBarChart。但不是这样,我认为横杆应该居中。即使我添加了更多,那么条形图也不会以记号为中心,就像在这里的第一个屏幕截图中看到的:为什么你的每个系列都只有一个国家和它的价值?我只想显示不同的条形图。我不想把他们分组。你想要同一年不同国家的不同酒吧吗?实际上我想要多个不同颜色的酒吧。另一个解决方案是带有更改侦听器的StackedBarChart。但不是这样,我认为横杆应该居中。即使我添加了更多,那么条线也不会以记号为中心,只是在这里的第一个屏幕截图中看到:非常感谢!这比我以前做的要好得多,但仍然不居中。只差几个像素,不幸的是,这是显而易见的。如果你有解决办法,我很高兴知道。非常感谢!这比我以前做的要好得多,但仍然不居中。只差几个像素,不幸的是,这是显而易见的。如果你有解决办法,我很高兴知道。非常感谢!这比我以前做的要好得多,但仍然不居中。只差几个像素,不幸的是,这是显而易见的。如果你有解决办法,我很高兴知道。非常感谢!到目前为止