Как отобразить значение из оси x диаграммы (временные ряды) в формате ЧЧММСС? - PullRequest
0 голосов
/ 15 октября 2019

Теперь я создаю диаграмму и показываю ось x с помощью ЧЧММСС;

enter image description here

, затем я хочу показать подсказку (изображение показывает)когда мышь перемещается:

КОД:

chartPanel.addChartMouseListener(new ChartMouseListener() {

    @Override
    public void chartMouseClicked(ChartMouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void chartMouseMoved(ChartMouseEvent arg0) {
        // TODO Auto-generated method stub
        Rectangle2D dataArea = chartPanel.getScreenDataArea();
        JFreeChart chart = arg0.getChart();
        XYPlot plot = (XYPlot) chart.getPlot();
        ValueAxis xAxis = plot.getDomainAxis();
        double x = xAxis.java2DToValue(arg0.getTrigger().getX(), dataArea, 
                RectangleEdge.BOTTOM);
        double y = DatasetUtilities.findYValue(plot.getDataset(), 0, x);
        xCrosshair.setValue(x);
        yCrosshair.setValue(y);

    }

});

Двойной Х получает двойное значение

double x = xAxis.java2DToValue(arg0.getTrigger().getX(), dataArea, 
                RectangleEdge.BOTTOM);

и устанавливает значение с помощью

xCrosshair.setValue(x);

Таким образом, он покажет двойное значение, и как я могу показать значение с помощью «hhmmss»?

1 Ответ

0 голосов
/ 15 октября 2019

Я нахожу способ решить эту проблему:

использовать setLabelGenerator в перекрестии;

xCrosshair.setLabelGenerator(new CrosshairLabelGenerator() {
    @Override
    public String generateLabel(final Crosshair ch) {               
        Double timevalue = ch.getValue();
        long ltimevalue = ((long) (timevalue*1 ));
        Date itemDate = new Date(ltimevalue);
        String myDateStr = new SimpleDateFormat("HHmmss").format(itemDate);
        return myDateStr;
    }
});
...