java 不重画_动态JFreeChart不重绘更改

我正在利用JFreeChart库来实时绘制遗传算法的进度 .

我正在使用Swing作为用户界面 . 我有一个面板,我绘制算法的所有各种参数,以及ChartPanel对象 . 在调用算法的搜索方法(在每一代更新图表的XYSeries对象)之前和搜索结束时绘制此对象,并准确绘制所有值 .

根据文档,ChartPanel对象在更新其相应图表时会重新绘制 . 显然,Swing面板本身在搜索完成之后才会重新绘制,我调用repaint(),但是我该怎么做才能解决这个问题呢?

这是图表代码:

public class XYSeriesDemo {

private static final long serialVersionUID = 1L;

private XYSeries series;

private JFreeChart chart;

public XYSeriesDemo(String str) {

series = new XYSeries(str);

XYSeriesCollection data = new XYSeriesCollection(series);

chart = createChart(data);

}

public XYSeries getSeries() {

return series;

}

public ChartPanel getChartPanel() {

return new ChartPanel(chart);

}

private JFreeChart createChart(final XYDataset data) {

JFreeChart chart = ChartFactory.createXYLineChart(

"Best fitness across generations",

"Generation",

"Fitness",

data,

PlotOrientation.VERTICAL,

true,

true,

false

);

XYPlot plot = chart.getXYPlot();

ValueAxis axis = plot.getDomainAxis();

axis.setAutoRange(true);

axis = plot.getRangeAxis();

axis.setAutoRange(true);

return chart;

}

}

在我的面板构造函数中,我正在执行以下操作(这会得到一个空图表):

demo = new XYSeriesDemo("Best fitness");

this.add(demo.getChartPanel());

这是当用户订购搜索时Swing框架在我的JPanel对象中调用的方法:

public void solve() {

gen = new Random(seed);

XYSeries s = demo.getSeries();

GeneticAlgorithm ga = new GeneticAlgorithm(pop, crossoverP, mutationP,

eliteSize, maxGens, gen, s);

best = ga.search();

state = State.SOLVED;

time = ga.getTime() / 1E9;

}

在每一代中,算法中的搜索方法都可以:

series.add(generation, pop.getBestFitness());

谢谢你的阅读 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值