当前位置: 代码迷 >> J2SE >> 在Frame上画方格,但是每次运行的结果都不能全部显示出来,该如何解决
  详细解决方案

在Frame上画方格,但是每次运行的结果都不能全部显示出来,该如何解决

热度:66   发布时间:2016-04-24 01:15:27.0
在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);            }        }    }}
  相关解决方案