【发布时间】:2014-01-14 00:23:05
【问题描述】:
我正在 Java Swing 中制作一个简单的排序基准,我希望它显示一个随时间变化的图表。但是当算法运行时,图表并没有更新。我真的很困惑。有人可以解释一下我做错了什么吗?
当 GUI 运行时,数组填充随机数据
int A[]=null;int [] copyOfA=null;
图表
final XYSeriesCollection dataset = new XYSeriesCollection();
private ChartPanel createDemoPanel() {
JFreeChart jfreechart = ChartFactory.createXYLineChart(title, "array", "time",dataset ,
PlotOrientation.VERTICAL, true, true, false);
jfreechart.setBackgroundPaint(Color.white);
XYPlot plot = (XYPlot) jfreechart.getPlot();
plot.getDomainAxis().setRange(0, 1000); //array
plot.getRangeAxis().setRange(-1,1);//time
//plot.getDomainAxis().setFixedAutoRange(20);
//plot.getRangeAxis().setFixedAutoRange(100);
// render shapes and lines
XYLineAndShapeRenderer renderer =
new XYLineAndShapeRenderer(true, true);
plot.setRenderer(renderer);
renderer.setBaseShapesVisible(true);
renderer.setBaseShapesFilled(true);
return new ChartPanel(jfreechart);
}
在ActionPerformed里面
private void insSortActionPerformed(java.awt.event.ActionEvent evt) {
XYSeries series = new XYSeries("ins sort");
if( insSort.isEnabled()) {
long startTime = System.currentTimeMillis();
insSort(A);
long endTime = System.currentTimeMillis();
totalRuntime += (endTime - startTime);
}
series.add(totalRuntime,A.length);
dataset.addSeries(series);
}
【问题讨论】:
-
insortA(A)是负责排序的方法吗?如果是这样,那么当此方法完成时,您的图形将只更新一次。如果此方法花费的时间太长,那么您的 GUI 将冻结,因为它会阻止 Event Dispatch Thread 直到完成其执行。 -
不幸的是,屏幕上什么也没有出现..
-
我找不到解决方法,有什么建议吗?
-
尝试设置渲染器的系列绘制:
renderer.setSeriesPaint(0, Color.BLACK);。不确定哪个是默认绘制,可能是null或Color.WHITE。 -
这就是我得到的。IMG]i44.tinypic.com/2ry0axv.jpg[/IMG]
标签: java swing plot jfreechart