擴展到HovercraftFullOfEels的建議,我會創建一個自定義Component
(在這種情況下可能是JLabel
)。
我會在每個中使用一個javax.swing.Timer
,設置爲每5秒重複執行一次下載請求。這裏的問題是;
- 這可能會導致你的系統資源流失,如果你有大量的圖片,每個組件請求單獨下載,
- 才能下來每個圖像可能需要更長的時間5秒鐘的時間。在這種情況下你會做什麼?
另一種方法是有一個負責處理下載請求的集中式隊列。這可以是自動的(即,你註冊你Component
它,它決定何時應該更新)或愚蠢的,你可以添加一個請求,當你想要。
在自動模型中,您可以更好地控制資源管理。
在這種情況下,我會試圖使用類似ScheduledExecutorService的東西來管理下載任務。基本思想是,在未來的某個特定時間(5秒),下載任務將執行,這將下載圖像並將其應用於Component
,然後它會將新的下載請求註冊回ScheduledExecutorService
這種方法允許您控制由系統創建的線程數以及修改請求之間的時間。
在啞模型,我可能會使用的javax.swing.Timer
&一個ExectutorService(可能是ThreadPoolExecutor)的組合。計時器將與每個Component
相關聯,當它觸發時,它將新的請求放到啞隊列中。啞隊列,在未來的某個時間將下載圖像&返回到Component
。
我看到的主要問題是,在前一個請求完成之前,組件可能會請求新圖像。雖然您可以使用技巧來捕獲這些條件,但使用智能隊列思路會更簡單,更容易
所有這些想法都利用了Java的Thread
功能,在這種情況下,瞭解Event Dispatching Thread &如何處理Concurrency in Swing
*「我想顯示從url獲得的圖像」*圖像的內容是什麼?什麼是典型的URL? – 2012-08-09 00:58:30