2017-06-22 46 views
-1

我會從地圖填充條形圖。 我想這樣,但它不工作:JavaFX來自地圖的條形圖

xAxisAuthor.setLabel(titleX); 
    yAxisAuthor.setLabel(titleY); 
    ReadJson jsonRead = new ReadJson(); 
    TypeToken<List<Book>> bookToken = new TypeToken<List<Book>>() { 
    }; 
    Map<String, Long> map = jsonRead.groupJson(new File(UrlAndPath.JSON_LIBRI), bookToken); 
    XYChart.Series<String, Number> series1 = new XYChart.Series<>(); 
    series1.setName(title); 
    for (Map.Entry<String, Long> entry : map.entrySet()) { 
     String tmpString = entry.getKey(); 
     Number tmpValue = entry.getValue(); 
     XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue); 
     System.out.println(d); 
     series1.getData().add(d); 
    } 
    barChart.setTitle(title); 
    barChart.getData().addAll(series1); 

實際上你把鑰匙,而不是值。 但在我看來,XYChart.Data看好:

Data[thomas mann,1,null] 
Data[giorgio zarelli,1,null] 

在圖形值始終爲零。 你能給我一個小費嗎?

+1

你可以創建一個[MCVE]嗎?只需用條形圖和硬編碼的地圖編寫一個簡單的應用程序(您不需要使用JSON來演示此問題),以便其他人可以運行應用程序並查看問題? –

回答

0

好吧,我想沒有這個JSON代碼,似乎工作:

Map<String, Long> map = new HashMap<>(); 
    map.put("thomas mann", 1L); 
    map.put("clive cussler", 3L); 
    map.put("stephen king", 6L); 

    XYChart.Series<String, Number> series1 = new XYChart.Series<>(); 
    series1.setName(title); 
    for (Map.Entry<String, Long> entry : mapOld.entrySet()) { 
     String tmpString = entry.getKey(); 
     Number tmpValue = entry.getValue(); 
     XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue); 
     System.out.println(d); 
     series1.getData().add(d); 
    } 
    barChart.setTitle(title); 
    barChart.getData().addAll(series1); 

也許問題是值長在JSON?

0

問題在於值太多。 此作品:

for (Map.Entry<String, Long> entry : map.entrySet()) { 
     String tmpString = entry.getKey(); 
     Long tmpValue = entry.getValue(); 
     XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue); 
     //System.out.println(tmpString + ": " + tmpValue); 
     //System.out.println(d); 
     series1.getData().add(d); 
     count++; 
     if (count == 10) { 
     break; 
     } 
    } 

謝謝!!