2012-05-26 106 views
1

我有一個是這樣的代碼:如何在恢復代碼之前等待setIcon()方法執行?

jLabel.setIcon(map); 
Graphics2D g = (Graphics2D) jLabel.getGraphics(); 
g.drawPolygon(xpoints,ypoints,vpolygonpointsarray.length); 

但是,什麼情況是,多邊形先繪製的標籤圖標更新之前。我懷疑設置一個圖標會創建一個新線程。我想等到代碼的其餘部分執行之前設置圖標。我會怎麼做?

+0

設置圖標絕對不會創建新線程。重新繪製事件計劃在稍後,但是,這可能會導致您的問題。真正的教程鏈接@vizier下面添加。 – wolfcastle

回答

6

您應該使用重寫繪畫方法(paint()paintComponents()等)來執行自定義繪畫代碼。請點擊此處:http://docs.oracle.com/javase/tutorial/uiswing/painting/step2.html

+1

在這種情況下,標誌與等待方法結束無關。您處於代碼的單個線程部分。問題是這樣的:你在組件圖形上繪製,但是當swing嘗試重新繪製組件時,它會調用update/paint方法,這些方法只會描繪你所做的事情。出於這個原因,我們重寫paint方法,並確保每次swing重繪組件時都會自定義繪畫。 –

相關問題