2013-04-28 13 views
5

Programımda bir ayarları sekmem var. Burada ayarlayabileceğiniz veriler sadece bu panelden değiştirilebilir. Bu yüzden bu verileri her 5 saniyede bir yeniden yüklemek istiyorum. Bunun fazladan bir iş parçacığı ile yapılması gerektiğini düşünüyorum, ancak konu hakkında bilgim minimumdur. Bu amaç için zaten bir yeniden yükleme yöntemim var.Yeniden yükle JPanel her X saniye (thread ile?)

Bunu yapmak için ne kullanmalıyım (ve nasıl ...)?

cevap

4

kullanın ScheduledExecutorService:

private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 
scheduler.scheduleAtFixedRate(yourRunnable, 5, 5, SECONDS); 

Sonra yeniden senin JPanel yourRunnable içinde (sadece javadocs gelen örneğini takip).

0

Verilerinizi düzenli olarak güncellemek için Timer'u kullanabilirsiniz.

5

ama Konu hakkında bilgim azdır ...

  1. Kesinlikle genel olarak iş parçacığı hakkında bilgi edinmek gerekir ve Java Concurrency Tutorial yardımcı olabilir.
  2. O zaman özellikle concurrency in Swing hakkında bilgi edinmelisiniz.
  3. GUI'nizin verilerini, JPanel'in paintComponent(...) yöntemindeki veya daha iyi olarak, daha sonra paintComponent(...) içinde görüntülenen bir BufferedImage dosyasındaki grafik temsilini çizin.
  4. Verileri, SwingWorker gibi bir arka plan iş parçacığında yeniden yükleyin. Bu İşçi, her 5 saniyede bir yeni veri talep eden ve elde edilen bir syf0rg cevabıyla (syb0rg'ın cevabına 1+) bir java.util.Timer veya bir ScheduledExecutorService'a sahip olabilir.
  5. Verileriniz değiştikten sonra Swing olay dizisinden repaint() numaralı telefonu arayın. SwingWorker kullanılıyorsa, işlem/yayınlama yöntemi çifti bu konuda yardımcı olabilir. Verilerinizi bununla Swing olayı iş parçacığına yayınlayabilirsiniz.
+0

Adımı yanlış yazdınız: P + 1, bahsetmediğim tüm yararlı öğeler için. – syb0rg

+1

@ syb0rg: oops, kötüyüm! –

+0

+1 adımlarını 5 noktadan kısa bir süre için sağlayın. –

İlgili konular