как показать данные в реальном времени на dateAxis в Javafx - PullRequest
0 голосов
/ 30 мая 2018

Графическое изображение

Мне просто интересно, что я хочу сделать программу, которая отображает данные в реальном времени на DateAxis, используя диаграмму javafx.

Теперь я сделал диаграмму в реальном времени, ноэто не совпадает с DateAxis.Я знаю, что есть CategoryAxis и NumberAxis, и когда я искал в Stackoverflow, мне нужно использовать NumberAxis для setTickLabelFormatter.

Теперь я получил дату (строковый тип) из базы данных и изменил ее на длинный тип.но я не знаю, как вставить эти данные в LineChart xAxis.сначала мне нужно отсортировать эти данные по дате и вставить в xAxis.

В моем коде много ошибок.Мне нужен способ решения проблемы, а не ошибок.Я понятия не имею, чтобы решить это.Пожалуйста, помогите мне.

Это код для данных:

while(searchCursor.hasNext())  
             {
                 Document element = searchCursor.next();
                 String datetime = element.getString("Date");
                 Double value = Double.parseDouble(element.getString("Value"));
                 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            try {
                date = format.parse(datetime);
                longdate = date.getTime();
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

             Datalist.add(new GraphData(longdate, value));

             Collections.sort(Datalist, new Comparator<GraphData>() {
                 @Override
                 public int compare(GraphData date1, GraphData date2)
                 {
                     return date1.Date.compareTo(date2.Date);
                 }
             });

             dateAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(dateAxis)
             {

                 @Override
                 public String toString(Number object)
                 {
                     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");

                     LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(object.longValue()), ZoneId.systemDefault());
                     String formattedDateTime = dateTime.format(formatter);
                     return formattedDateTime;

                 }
             });

             series[i].getData().add(new XYChart.Data<Number, Number>((Datalist.get(eachdatacnt).Date), Datalist.get(eachdatacnt).Value));
             eachdatacnt++;
         }

         series[i].setName(SelectedEndpointNameList.get(i).toString());
         lineChart.setAnimated(false);
         lineChart.getData().add(series[i]);
         lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.X_AXIS);
     }
...