- 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); } } }}