[RESOLVIDO] Usar NumberFormat com Hora, Minuto e Segundo [JFreeChart]

Olá pessoal!

Estou fazendo um gráfico com JFreeChart, usando medições de temperatura de segundo em segundo, ou seja, a cada segundo eu tenho um valor de temperatura diferente.
Esse gráfico é muito extenso, pois eu receberei medições por aproximadamente 4 horas, totalizando 14.400 segundos.

O gráfico em anexo está correto, mas tem um inconveniente: Ao invés de mostrar 1.000, 2.000, 3.000 (…) segundos, eu queria mostrar 1h, 2h, 3h.

Como eu poderia fazer isso usando o NumberFormat?

Esqueci de dizer que tem uma classe que pode ajudar a fazer isso:

ValueAxis domainAxis = plot.getDomainAxis(); domainAxis.setStandardTickUnits(TimeAxis.createTimeTickUnits()); //este código muda o jeito de exibição do DomainAxis
E esta é a classe TimeAxis (copiei ela da classe org.jfree.chart.axis.NumberAxis). Quero fazer isso com as Horas, Minutos e Segundos:

[code]public class TimeAxis {

public static TickUnitSource createTimeTickUnits() {
    TickUnits units = new TickUnits();

// SimpleDateFormat format = new SimpleDateFormat(“0”);
DecimalFormat dfs = new DecimalFormat(“0”);
DecimalFormat dfh = new DecimalFormat("#,##0");
units.add(new NumberTickUnit(1, dfs, 2));
units.add(new NumberTickUnit(2, dfs, 2));
units.add(new NumberTickUnit(5, dfs, 5));
units.add(new NumberTickUnit(10, dfs, 2));
units.add(new NumberTickUnit(20, dfs, 2));
units.add(new NumberTickUnit(60, dfm, 5));
units.add(new NumberTickUnit(120, dfs, 2));
units.add(new NumberTickUnit(200, dfs, 2));
units.add(new NumberTickUnit(500, dfs, 5));
units.add(new NumberTickUnit(1000, dfh, 2));
units.add(new NumberTickUnit(2000, dfh, 2));
units.add(new NumberTickUnit(5000, dfh, 5));
units.add(new NumberTickUnit(10000, dfh, 2));
units.add(new NumberTickUnit(20000, dfh, 2));
units.add(new NumberTickUnit(50000, dfh, 5));
units.add(new NumberTickUnit(100000, dfh, 2));
units.add(new NumberTickUnit(200000, dfh, 2));
units.add(new NumberTickUnit(500000, dfh, 5));
units.add(new NumberTickUnit(1000000, dfh, 2));
units.add(new NumberTickUnit(2000000, dfh, 2));
units.add(new NumberTickUnit(5000000, dfh, 5));
units.add(new NumberTickUnit(10000000, dfh, 2));
units.add(new NumberTickUnit(20000000, dfh, 2));
units.add(new NumberTickUnit(50000000, dfh, 5));
units.add(new NumberTickUnit(100000000, dfh, 2));
units.add(new NumberTickUnit(200000000, dfh, 2));
units.add(new NumberTickUnit(500000000, dfh, 5));
units.add(new NumberTickUnit(1000000000, dfh, 2));
units.add(new NumberTickUnit(2000000000, dfh, 2));
units.add(new NumberTickUnit(5000000000.0, dfh, 5));
units.add(new NumberTickUnit(10000000000.0, dfh, 2));
return units;
}

}[/code]


Resolvi assim:

[code]public class TimeAxis {

public static TickUnitSource createTimeTickUnits() {
    TickUnits units = new TickUnits();
	TimeFormat format = new TimeFormat();
    units.add(new NumberTickUnit(1, format, 2));
    units.add(new NumberTickUnit(2, format, 2));
    units.add(new NumberTickUnit(5, format, 5));
    units.add(new NumberTickUnit(15, format, 2));
    units.add(new NumberTickUnit(30, format, 2));
    units.add(new NumberTickUnit(60, format, 5));
    units.add(new NumberTickUnit(120, format, 2));
    units.add(new NumberTickUnit(240, format, 2));
    units.add(new NumberTickUnit(540, format, 5));
    units.add(new NumberTickUnit(1080, format, 2));
    units.add(new NumberTickUnit(2160, format, 2));
    units.add(new NumberTickUnit(3600, format, 2));
    units.add(new NumberTickUnit(5400, format, 5));
    units.add(new NumberTickUnit(10800, format, 2));
    units.add(new NumberTickUnit(21600, format, 2));
    units.add(new NumberTickUnit(36000, format, 2));
    units.add(new NumberTickUnit(54000, format, 5));
    units.add(new NumberTickUnit(72000, format, 5));
    return units;
}

}[/code]

[code]public class TimeFormat extends NumberFormat {

public TimeFormat(String pattern) {
}

public TimeFormat() {
}

@Override
public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
	StringBuffer sb = new StringBuffer();

	double min = number / 60D;
	if (min < 1) {
		sb.append((int) number).append("s");
	} else {
		double hora = min / 60;
		if (hora < 1) {
			sb.append((int) min).append("m");
		} else {
			min = min % 60;
			sb.append((int) hora).append("h").append((int) min).append("m"); //Tenho que terminar aqui ainda... não está completo!
		}
	}

	return sb;
}

@Override
public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
	throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public Number parse(String source, ParsePosition parsePosition) {
	throw new UnsupportedOperationException("Not supported yet.");
}

}[/code]

A classe TimeFormat não está completa ainda, mas essa que é a idéia!

Abraços!