我的Java程序不会在整个窗口上绘制矩形

时间:2017-11-08 00:56:36

标签: java swing

我正试图在800 * 800的窗口上绘制一个80 * 80的矩形,但出于某种原因,我只能画两列!!我觉得我缺少一些关于Java的东西。我有一个叫做Draw​​Board的类,它有一个覆盖paint()方法的方法。此类的对象在另一个名为DrawWindow的类中创建。然后,在Main中,我创建了一个新的DrawWindow对象。 这是我的代码:

`

package legalGameMove;
import java.awt.*;
import javax.swing.*;

public class DrawBoard extends JPanel{

int r = 0, c = 0;
int w = getWidth(), h = getHeight();

public void paint(Graphics g){

    int count = 0;
    while(count <= 10){

        if((count % 2) == 0){

        for(int i = 0; i <= w; i++){                
            for(int j = 0; j <= h; j++){

                g.setColor(Color.black);
                g.fillRect(r , c, 80, 80);

                r+= 80;
                    g.setColor(Color.white);
                    g.fillRect(r, c, 80, 80);
                r+= 80;                 
            }
        }

    }else{

        for(int i = 0; i <= w; i++){                
            for(int j = 0; j <= h; j++){

                g.setColor(Color.white);
                g.fillRect(r , c, 80, 80);

                r+= 80;
                    g.setColor(Color.black);
                    g.fillRect(r, c , 80, 80);
                r+= 80;                 
            }
        }
    }
        r = 0;
        c+= 80; 
        count++;
}


}
}

`

 package legalGameMove;
 import java.awt.*;
 import javax.swing.*;
 public class DrawWindow extends JFrame{
public DrawWindow(){        

    super("game board");
    Container cont = getContentPane();
    //setBackground(Color.WHITE);
    DrawBoard db = new DrawBoard();
    cont.add(db, BorderLayout.CENTER);
    setSize(800,800);
    setResizable(false);
    setVisible(true);
}

}

1 个答案:

答案 0 :(得分:2)

构建w时,字段hDrawBoard会被初始化,其中宽度和高度仍未设置(零)。将这些声明移到paint

最好使用paintComponent进行绘图。