2013-03-04 67 views
-1

我想畫圓到我的面板上,但圓的顏色是由一些參數決定的。首先,應將圓塗成白色,然後進入for循環,檢查參數是否匹配,並應以該顏色繪製圓。圓圈的位置存儲在一個數組中。我迄今爲止所做的代碼不起作用。我顯然做錯了,但我是新來的Java和編碼,所以我很困難。如果有人能告訴我如何編輯/更改我的代碼,我會非常感激。 ArrayList circlesT是圓圈位置的數組列表,temp也是數組,其值也是我的參數。定時器與油漆組件

public void paintComponent(Graphics g) {    
     drawShapes(g, circlesT);   
    }   

    public void drawShapes(Graphics g, final ArrayList<Shape> circlesT) { 
     final Graphics2D ga = (Graphics2D) g; 
     ga.drawImage(newImage, 0, 0, null); 
     for (int i = 0; i < circlesT.size(); i++) { 
      ga.draw(circlesT.get(i)); 
      ga.setPaint(Color.white); 
      ga.fill(circlesT.get(i)); 
     }  
     Timer timer = new Timer(); 
     TimerTask t; 
     t = new TimerTask() { 
      @Override 
      public void run() { 
       for (int i = 0; i < 10; i++) { 
        if (read.temp.get(i) < 31 && read.temp.get(i) > 30) { 
         ga.draw(circlesT.get(i)); 
         ga.setPaint(Color.green); 
         ga.fill(circlesT.get(i)); 
        } else if (read.temp.get(i) < 32 && read.temp.get(i) > 31) { 
         ga.draw(circlesT.get(i)); 
         ga.setPaint(Color.red); 
         ga.fill(circlesT.get(i)); 
        } else if (read.temp.get(i) < 33 && read.temp.get(i) > 32) { 
         ga.draw(circlesT.get(i)); 
         ga.setPaint(Color.yellow); 
         ga.fill(circlesT.get(i)); 
        }     
       }      
      } 
     }; 
     //repaint(); 
     timer.schedule(t, 0, 1000);  
    } 
+1

*「週四到期」*太本地化。 – 2013-03-04 21:52:17

回答

3

有幾點。

  • 您不應該在方法調用結束後繼續保持Graphics對象從paintComponent
  • 一般而言,您應該使用javax.swing.Timer而不是java.util.Timer
  • 您應該在計時器任務/操作中實際執行的操作是更新數據的狀態並致電repaint
  • 執行所有繪畫的代碼應在返回之前在paintComponent中調用。
+0

你可以請我使用我提供的代碼給我看。對不起,我有點困惑,該怎麼做。這是由於星期四,有點擔心。 – user2133166 2013-03-04 19:49:52

+0

@ user2133166:爲什麼不先嚐試自己實施他的建議,然後如果您在實施過程中遇到問題,請告訴我們您已完成的工作,我們可以幫助您更好地完成工作。請在這裏留下所有提交截止日期的提示,因爲它與您提出的Java問題無關,只會分散注意力。 1+給湯姆H.他的出色答案! – 2013-03-04 22:14:25

+0

我不明白。繪製組件類調用drawShapes方法,這是做這個錯誤的形式。我是否需要將這段代碼放在實際的paint組件類中?如果我要把計時器拿出來,我的代碼就可以工作,並且它會在同一時間繪製圓圈。我想添加一個定時器,以便在循環之後停止2秒,然後再次進入循環 – user2133166 2013-03-04 23:27:39