高分求教一個怪異的問題

RectangleE類代碼

Java code
import javax.swing.*; import java.awt.*; class RectangleE extends JFrame{ private int height=0,width=0;//declare fields; public RectangleE(){ }//constructor; public void setHeight(int h){ height=h; } public void setWidth(int w){ width=w; } public int calculateArea(){ return height*width; } @Override public void paint(Graphics g){ int s=0; for(int i=60;i<=500;i++){ g.clearRect(i-1, 50, width, height);//清除前面的矩形; //g.drawRect(i,50, width, height); s=(i-60)%6;//用此產生6種情況以改變顏色; switch (s){//選擇顏色; case 0: g.setColor(Color.red); break; case 1: g.setColor(Color.BLUE); break; case 2: g.setColor(Color.PINK); break; case 3: g.setColor(Color.ORANGE); break; case 4: g.setColor(Color.GRAY); break; case 5: g.setColor(Color.MAGENTA); break; } g.fillRect(i, 50, width, height); try{ Thread.sleep(1); } catch(Exception e){ System.out.println("wenti"); }//爲什麼此處用wait()方法不管用? } } public void draw(){ //this.setForeground(Color.blue); this.setBackground(Color.yellow);//設置背景; this.setSize(600,500);//設置窗口大小; this.setVisible(true);//可見; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//關閉窗口,關閉程序; this.setResizable(false);//禁止改變窗口大小; repaint(); } }


執行時,矩形從左向右會有時候走三遍,有時候走兩遍,很怪異啊,我明明只讓它運行一遍的,各位麻煩幫忙看一下
這是爲什麼????

這個樣子問題就解決了。
應該是JVM在加載這個RectangleE這個類的時候,自動調了一次paint(), new出來的時候又調了一次,
有時候你draw的時候在rapaint的一次。
加上static後一開就加載了他,而且指引的只有一個對象,在paint一次後就不在paint的了
以上都是我個人意見,你自己再看看。加上static是不是OK了。
我測試了是OK了

樓主把setVisible(true)移到main方法裏面去就搞定了,原因暫時沒想明白,不過setVisible(true)一般要放在初始化的最後爲好,不然的話不知道會出現什麼樣的狀況。

額 樓主的這個問題在樓主的第一個帖子裏就看到了 麼想明白

調試的過程中還有時候paint()調用了3-5遍呢 - - 十分頭大

等達人解答 順便幫頂

要不樓主試下把setVisible(true)後面的repaint()去掉,或者把setVisible(true)後面所有的語句去掉,反正我電腦上是每次都只會畫一次了,樓上有3-5遍的我只能抱以詫異的目光。

恩 去掉這個少了一次 但是把setVisible(true)移到main方法裏面不管用啊

調了一下,似乎setResizable(false)幹了什麼壞事,真相不明,註釋掉這句也沒事了

來源:英超直播

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章