我正试图在800 * 800的窗口上绘制一个80 * 80的矩形,但出于某种原因,我只能画两列!!我觉得我缺少一些关于Java的东西。我有一个叫做DrawBoard的类,它有一个覆盖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);
}
}
答案 0 :(得分:2)
构建w
时,字段h
和DrawBoard
会被初始化,其中宽度和高度仍未设置(零)。将这些声明移到paint
。
最好使用paintComponent
进行绘图。