2016-03-03 67 views
0

我有一個Java擺動計劃,我想插入此圖片:如何顯示在圖像的中心動態文本的JPanel

enter image description here

在市中心,這種形象的,我想插入一個動態文本是這樣的:

05:00(這是一個定時器)

所以我建立這個代碼:

public void getLabel(){ 
    labelTempoGara = new TimeRefreshRace(); 
    labelTempoGara.setForeground(Color.white); 
    labelTempoGara.start(); 
} 
    class TimeRefreshRace extends JLabel implements Runnable { 

     private boolean isAlive = false; 

     public void start() { 
      threadTempoCorsa = new Thread(this); 
      isAlive = true; 
      threadTempoCorsa.start(); 
     } 

     public void run() { 
      int tempoInSecondi = programma.getTempoGara() % 60; 
      int minuti = programma.getTempoGara()/60; 
      while (isAlive) { 
       try { 
        if (minuti <= 0 && tempoInSecondi<=1) { 
         isRun=false; 
         this.setText("00:00"); 
         isAlive = false; 
         salvaDatiCorsa(); 
         break; 
        } 
        if(tempoInSecondi<=1){ 
         minuti--; 
         tempoInSecondi=60; 
        } 
        --tempoInSecondi; 
        this.setText(minuti+":"+ tempoInSecondi); 
        Thread.sleep(1000); 

       } catch (InterruptedException e) { 
        log.logStackTrace(e); 
       } 
      } 
     } 

     public void kill() { 
      isAlive = false; 
      isRun=false; 
     } 

    }//fine autoclass 

現在我該如何插入這個標籤在我的圖像的中心,並將它放在我的JPanel?

+0

How to use Swing TimersWorker Threads and SwingWorker「現在哪能插入這個標籤在我的圖像的中心,並把它放在我的JPanel ???「:JPanel在哪裏? – gpasch

回答

2

將外部圖像包裹在JLabel中,對其應用BorderLayoutGridBagLayout,添加您的計時器標籤。此外,您通過從EDT上下文之外更新組件的狀態來違反Swing的線程規則。

更多細節

Concurrency in Swing

相反,你可以考慮使用一個Swing取決於你希望什麼TimerSwingWorker實現

更多細節

相關問題