在Frame上畫方格,但是每次運行的結果都不能全部顯示出來,該如何解決

tags:    時間:2013-12-17 12:53:47
在Frame上畫方格,但是每次運行的結果都不能全部顯示出來
Java code
  import java.awt.Color; import java.awt.Graphics;  import javax.swing.JFrame;   public class Test extends JFrame{     private int height = 22;    //格子的長度     private int width = 22;        //格子的寬度     private int size = 20;   //每個格子的大小     public Test(){         this.setVisible(true);         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         this.setSize(height*size+10,width*size+35);         Graphics g = this.getGraphics();         g.setColor(Color.blue);         for(int i=0;i<width;++i){             for(int j=0;j<height;++j)                 g.fill3DRect(i*width, j*height, size, size, true);         }     }     public static void main(String []args){         new Test();     } }  

不知道為什麼每次只有一半能顯示,,但是如果放在線程裡面,讓它一秒畫一個,確實又是畫上了的,,放在線程裡面的話前2個格子又不會顯示,,不知道為什麼,,求助啊

------解決方案--------------------
JFrame不能用來畫圖的吧,畫圖什麼的應該交給JComponent或它的子類JPanel來完成,一般要畫的內容都是寫在paintComponent(Graphics g)這個方法裡面的

Java code
  import java.awt.*; import javax.swing.*;  public class Test extends JFrame{     public Test(){         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         this.add(new TestComponent());         this.pack();         this.setVisible(true);     }     public static void main(String []args){         new Test();     } }  class TestComponent extends JPanel {     private int height = 22;    //格子的長度     private int width = 22;        //格子的寬度     private int size = 20;   //每個格子的大小          public TestComponent()     {         this.setPreferredSize(new Dimension(height*size+10,width*size+35));    //為了讓pack起作用     }          public void paintComponent(Graphics g)     {         g.setColor(Color.blue);         for (int i = 0; i < width; i++)         {             for (int j = 0; j < height; j++)             {                 g.fill3DRect(i * width, j * height, size, size, true);             }         }     } }            

推薦閱讀文章

Bookmark the permalink ,來源:互聯網