Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在条形图中显示相同的值_Java_Javafx - Fatal编程技术网

Java 在条形图中显示相同的值

Java 在条形图中显示相同的值,java,javafx,Java,Javafx,问题是,当用列表填充条形图时,相同的值会相互重叠,并显示为一个。我花了很长时间才弄明白。现在,我通过简单地查找重复项并向其中添加一个副本来构建一个黑客解决方案。但是如果你显示一个包含100多个条目的列表,并且这些条目都是一位数字,例如,每个数字后面必然有9个空格,这使得格式化这些条目非常困难。因此我的问题是:是否有任何方法可以指示柱状图分别绘制它们,或者如果没有,是否有比我更好的解决方法 public void updateChart(boolean originalChart, Arr

问题是,当用列表填充条形图时,相同的值会相互重叠,并显示为一个。我花了很长时间才弄明白。现在,我通过简单地查找重复项并向其中添加一个副本来构建一个黑客解决方案。但是如果你显示一个包含100多个条目的列表,并且这些条目都是一位数字,例如,每个数字后面必然有9个空格,这使得格式化这些条目非常困难。因此我的问题是:是否有任何方法可以指示柱状图分别绘制它们,或者如果没有,是否有比我更好的解决方法

    public void updateChart(boolean originalChart, ArrayList<SortingEntry> entries){
    Platform.runLater(() -> {
        ArrayList<SortingEntry> list = Functions.checkForDoubles(entries);
        if(originalChart){
            inputSeries = new XYChart.Series();
            for(SortingEntry entry:list){
                XYChart.Data chartData = new XYChart.Data(entry.getValue(), entry.getValAsLong());
                inputSeries.getData().add(chartData);
            }
            input.getData().clear();
            input.getData().add(inputSeries);
        } else {
            resultSeries = new XYChart.Series();
            for(SortingEntry entry:list){
                XYChart.Data chartData = new XYChart.Data(entry.getValue(), entry.getValAsLong());
                resultSeries.getData().add(chartData);
            }
            result.getData().clear();
            result.getData().add(resultSeries);
        }
        System.out.println();
    });
}
CheckForDouble在函数中:

    public static ArrayList<SortingEntry> checkForDoubles(ArrayList<SortingEntry> list){
    ArrayList<String> doubles = new ArrayList<>();
    for(int i = 0; i < list.size(); i++){
        for(int j = 0; j < list.size(); j++){
            SortingEntry entry = list.get(i);
            if(entry.getValue().equals(list.get(j).getValue()) && !doubles.contains(entry.getValue()) && i != j){
                doubles.add(entry.getValue());
                list.remove(entry);
                entry.setValue(entry.getValue()+" ");
                list.add(entry);
                checkForDoubles(list);
            }
        }
    }
    return list;
}

不幸的是,这是图表的定义-对于一个X值条目.getValue,您有一个Y值。如果您不关心X值,只需使用索引即可:

int i;
for(SortingEntry entry:list){
    XYChart.Data chartData = new XYChart.Data(i++, entry.getValAsLong());
    inputSeries.getData().add(chartData);
}
否则,您需要使用空格注释之类的技巧,utf中有一个或编写自己的Axis实现。

请提供一个示例来说明问题。