gpt4 book ai didi

java - 如何让 Java Frame 不等待?

转载 作者:行者123 更新时间:2023-11-30 07:37:21 25 4
gpt4 key购买 nike

我正在编写一个用多边形逼近图像的遗传算法。在经历不同的世代时,我想将进度输出到 JFrame。但是,JFrame 似乎要等到 GA 的 while 循环完成才能显示某些内容。我不认为这是重绘之类的问题,因为一旦 while 循环退出,它最终会显示所有内容。我希望 GUI 即使在 while 循环运行时也能动态更新。

这是我的代码:

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);
}

最佳答案

However, it seems like the JFrame waits until the GA's while loop finishes to display something. I don't believe it's a problem like repainting

是的,如果循环代码在 EDT 上执行,那么在循环完成之前 GUI 无法重新绘制自身。循环代码应该在它自己的线程中执行,这样它就不会阻塞 EDT。

阅读 Concurrency 上的 Swing 教程部分获取更多信息。

关于java - 如何让 Java Frame 不等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com