我正在使用jfreechart绘制有关计算机操作记录器的图形。
例如:
1:2012/09/39/28 06:55:37 8 S 0x1c0c762终端--geometry = 134x35-显示:0.0 --role = Terminal-0x10591b0-16869-1343137248 --show-menubar --show-borders- -hide-toolbars --working-directory / home / termier“ Terminal”,“ Terminal”“ Terminal-termier @ akagi:〜”
2:2012/09/39/28 06:55:41 8 S 0x1600313 / usr / lib / xfce4 / notifyd / xfce4-notify“ xfce4-notifyd”,“ Xfce4-notifyd”“ xfce4-notifyd”
现在,我可以绘制每个点,就像(2012/09/39/28 06:55:37,Terminal),scilicet:x轴是2012/09/39/28 06:55:37,Y轴是:Terminal(我用1来表示Terminal,就像其他命令一样,如Terminal ... 2:2:/ usr / lib / xfce4 / notifyd / xfce4-notifyd等)
但是我需要画一个图块,例如:
航站楼1:_________ S |||||||
/ usr / lib / xfce4 / notifyd / xfce4-notifyd2:______________ S ||||||
com 3:_____ S ||||||
(S:开始,例如:2000/12/12 09:22:10开始)
.....
(当第一个命令结束时,另一个将开始,我就可以开始,这意味着post命令是前一个命令的结束时间)
但不是:1:S
2:S
3:S
这里有一些代码给你。
private XYDataset createDataset() {
Calendar precal;
Calendar postcal;
this.flags = modelfocus.getListflag();
commands = modelfocus.getListCommand();
DateFormat formatedate = new SimpleDateFormat("yyyy/MM/ww/dd HH:mm:ss");
precal = Calendar.getInstance();
postcal = Calendar.getInstance();
for (int i = 0; i < countCom; i++) {
this.series[i] = new TimeSeries(commands.get(i));
}
for (Focus listTxt : modelfocus.getList()) {
try {
Date d = new Date();
d = formatedate.parse(listTxt.date2String());
System.out.println(d);
precal.setTime(d);
//postcal.setTime();
} catch (ParseException e) {
System.out.println("Can't change this date");
e.printStackTrace();
}
String eachCmd = listTxt.getCommand();
for (int i = 0; i < countCom; i++) {
if (eachCmd == commands.get(i)) {
series[i].addOrUpdate(new Second(precal.getTime()),
flags.get(i));
}
}
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
for (int i = 0; i < countCom; i++) {
dataset.addSeries(this.series[i]);
}
return dataset;
}
请有人帮忙解决这个问题,非常感谢。
最佳答案
如此example中所示,您可以更改用于呈现时间序列值的Shape
。 Rectangle
如下所示。
r.setSeriesShape(0, new Rectangle(-4, -4, 9, 9));