import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class ChessPanel extends JPanel{
private int colsnum=19;
private int rectnum=22;
private int size;
private int top=5;
private int left=5;
private Graphics chess_g;
public ChessPanel(){
size=2*left+colsnum+rectnum;
chess_g=getGraphics();
setSize(size,size);
setBackground(new Color(180,150,100));
paint(chess_g);
}
public int getWidth(){
return size;
}
public void paint(Graphics g){
g.setColor(Color.black); //此处抛出NullPointerException
int x1=0,y1=0,x2=0,y2=0;
for(int i=1;i<=colsnum;i++){
x1=left+i*rectnum;
y1=top;
x2=left+i*rectnum;
y2=top+colsnum*rectnum;
g.drawLine(x1,y1,x2,y2);
}
}
public static void main(String args[]){
new ChessPanel();
}
为什么获取的Graphics对象为空呢????请高手指点指点啊~~~~~~~~~~~~~~~
import java.awt.event.*;
import javax.swing.*;public class ChessPanel extends JPanel{
private int colsnum=19;
private int rectnum=22;
private int size;
private int top=5;
private int left=5;
private Graphics chess_g;
public ChessPanel(){
size=2*left+colsnum+rectnum;
chess_g=getGraphics();
setSize(size,size);
setBackground(new Color(180,150,100));
paint(chess_g);
}
public int getWidth(){
return size;
}
public void paint(Graphics g){
g.setColor(Color.black); //此处抛出NullPointerException
int x1=0,y1=0,x2=0,y2=0;
for(int i=1;i<=colsnum;i++){
x1=left+i*rectnum;
y1=top;
x2=left+i*rectnum;
y2=top+colsnum*rectnum;
g.drawLine(x1,y1,x2,y2);
}
}
public static void main(String args[]){
new ChessPanel();
}
为什么获取的Graphics对象为空呢????请高手指点指点啊~~~~~~~~~~~~~~~
chess_g.setColor(rgb);
import java.awt.event.*;
import javax.swing.*;public class ChessPanel extends JPanel{
private int colsnum=19;
private int rectnum=22;
private int size;
private int top=5;
private int left=5;
private Graphics chess_g;
public ChessPanel(){
size=2*left+colsnum+rectnum;
chess_g=getGraphics();
setSize(size,size);
setBackground(new Color(180,150,100));
// repaint();
}
public int getWidth(){
return size;
}
public void paint(Graphics g){
g.setColor(Color.black);
int x1=0,y1=0,x2=0,y2=0;
for(int i=1;i<=colsnum;i++){
x1=left+i*rectnum;
y1=top;
x2=left+i*rectnum;
y2=top+colsnum*rectnum;
g.drawLine(x1,y1,x2,y2);
}
}
public static void main(String args[]){
ChessPanel cp = new ChessPanel();
Container container = new JFrame();
container.add(cp);
container.setSize(400, 400);
container.setVisible(true);
}
}可以这样修改,java doc里介绍了,可以重载paint()函数,但不应该直接调用它,需要的时候调用repaint()来实现。同时,需要一个容器来承载JPanel才能显示之。
个人意见,如有不当,高手指正。