我有一個是這樣的代碼:如何在恢復代碼之前等待setIcon()方法執行?
jLabel.setIcon(map);
Graphics2D g = (Graphics2D) jLabel.getGraphics();
g.drawPolygon(xpoints,ypoints,vpolygonpointsarray.length);
但是,什麼情況是,多邊形先繪製的標籤圖標更新之前。我懷疑設置一個圖標會創建一個新線程。我想等到代碼的其餘部分執行之前設置圖標。我會怎麼做?
我有一個是這樣的代碼:如何在恢復代碼之前等待setIcon()方法執行?
jLabel.setIcon(map);
Graphics2D g = (Graphics2D) jLabel.getGraphics();
g.drawPolygon(xpoints,ypoints,vpolygonpointsarray.length);
但是,什麼情況是,多邊形先繪製的標籤圖標更新之前。我懷疑設置一個圖標會創建一個新線程。我想等到代碼的其餘部分執行之前設置圖標。我會怎麼做?
您應該使用重寫繪畫方法(paint()
,paintComponents()
等)來執行自定義繪畫代碼。請點擊此處:http://docs.oracle.com/javase/tutorial/uiswing/painting/step2.html
在這種情況下,標誌與等待方法結束無關。您處於代碼的單個線程部分。問題是這樣的:你在組件圖形上繪製,但是當swing嘗試重新繪製組件時,它會調用update/paint方法,這些方法只會描繪你所做的事情。出於這個原因,我們重寫paint方法,並確保每次swing重繪組件時都會自定義繪畫。 –
設置圖標絕對不會創建新線程。重新繪製事件計劃在稍後,但是,這可能會導致您的問題。真正的教程鏈接@vizier下面添加。 – wolfcastle