我有這個循環中,collection
類repaint()
的JPanel continiously重繪()的JPanel如果以前重繪()完成
while(loop) {
imageicon = (ImageIcon) ois.readObject();
image = imageicon.getImage();
cjpanel.tempimage = image;
cjpanel.repaint();
Thread.sleep(100);
}
和cjpanel
延長在那裏我已經覆蓋paintComponent()
,我使用Double buffering
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
tempimage.getScaledInstance(dim.width, dim.height, Image.SCALE_FAST);
bufferGraphics.clearRect(0,0,dim.width,dim.width);
bufferGraphics.drawImage(tempimage,0,0,dim.width,dim.height, null);
g.drawImage(offscreen,0,0,this);
}
的JPanel
我的問題是repaint
始終是while循環後面的兩幀。即如果image 4
是while
環路,則paintComponent()
是借鑑`圖像2.
所以,我怎麼能加快repaint
或停止以前repaint
之前新repaint
做?
UPDATE
,當我從ObjectInputStream的改變圖像的大小,它工作正常。我認爲這是做圖像尺寸東西..
你的'while'循環在哪裏?使用'image'的代碼在哪裏?此外,您正在調用'tempimage.getScaledInstance',但您忽略了返回的縮放圖像。另外,保持相同的'bufferGraphics'對象「打開」應該在理論上工作,但是在我看來,它具有不好的代碼味道。最後,JPanel做了自己的雙緩衝,所以你可能應該把你的圖像傳遞給一個'drawImage'方法,它需要四個int參數,而不是自己調整它。 – VGR
@VGR請看到我的最新的問題..我使用'cjpanel'顯示圖像 –
「*和我使用雙緩衝*」搖擺已經雙緩衝,你不需要做任何事情。 – user1803551