我有一个正在绘制到JPanel上的BufferedImage。我要做的是通过以下方式设置BufferedImage的像素:
for (int yy = 0; yy < 18; yy++) {
for (int xx = 0; xx < 24; xx++) {
image.setRGB(xx * 32, yy * 32, 32, 32, pixels, 0, 32);
}
}
像素被定义和实例化,18是图像的高度/ 32,24是图像的宽度/ 32。这种方法似乎有效,但只有一半的时间。会发生的是,它有时会绘制所有图像,有时会绘制它的前三分之一(然后停止),有时会绘制第一个1/5,然后跳到图像的另一部分并绘制一些然后停下来。没有抛出错误,应用程序没有暂停或加载。有时候它有效,有时则不然。有什么理由可以发生这种情况?
答案 0 :(得分:3)
我的猜测是你的问题是一个线程问题,因为你展示的代码可能需要相当长的时间(相对而言)才能工作,并且为了让它与Swing一起工作,你必须确保在后台运行它线程,然后在完成后通知GUI,然后让GUI更新图像。 SwingWorker对此很有用。