我在寫一個用多邊形逼近圖像的遺傳算法。在經歷不同世代的同時,我想將進度輸出到JFrame。但是,好像JFrame一直等到GA的while循環完成顯示內容。我不認爲這是重繪的問題,因爲一旦while循環退出,它最終會顯示所有內容。即使在while循環運行時,我也想動態更新GUI。如何防止Java Frame等待?
這裏是我的代碼:
while (some conditions) {
//do some other stuff
gui.displayPolygon(best);
gui.displayFitness(fitness);
gui.setVisible(true);
}
public void displayPolygon(Polygon poly) {
BufferedImage bpoly = ImageProcessor.createImageFromPoly(poly);
ImageProcessor.displayImage(bpoly, polyPanel);
this.setVisible(true);
}
public static void displayImage(BufferedImage bimg, JPanel panel) {
panel.removeAll();
panel.setBounds(0, 0, bimg.getWidth(), bimg.getHeight());
JImagePanel innerPanel = new JImagePanel(bimg, 25, 25);
panel.add(innerPanel);
innerPanel.setLocation(25, 25);
innerPanel.setVisible(true);
panel.setVisible(true);
}
它可能是一個重新繪製preoblem(爲什麼你不這麼認爲?)。您應該重寫paintComponent方法。 – Giancarlo 2010-05-02 18:52:06