问题描述
Color co = g.getColor();g.clearRect(20*posx,20*posy,20,20);g.setColor(Color.red);g.fill3DRect(20*posx,20*posy,20,20,true);g.setColor(co);我想在pox poy处的20*20矩形画成红色,但是没有达到想要的效果,,怎么回事呢 问题补充:import java.awt.*;import javax.swing.*;class RoadPath extends JPanel{int direction;int map[][];int posx;int posy;public RoadPath(){posx = 17;posy = 25;direction = 8;JFrame f = new JFrame();f.setBounds(100,100,700,500);f.add(this);f.setVisible(true);//f.map = new int[30][20];//draw Road//竖 for(int y=4;y<16;y++){int ran=((int)(Math.random()*1000))%3;if(ran==0){map[3-1][y]=1;map[3+23-1][y]=1;map[3+1][y]=1;map[1+3+23][y]=1;}if(ran==1){map[3+1][y]=1;map[1+3+23][y]=1;}if(ran==2){map[3+1][y]=1;map[1+3+23][y]=1;map[3+2][y]=1;map[2+3+23][y]=1;}map[3][y]=1;map[3+23][y]=1;}for(int x=3;x<27;x++){int ran=((int)(Math.random()*1000))%3;if(ran==0){map[x][3-1]=1;map[x][3+13-1]=1;map[x][3+1]=1;map[x][3+13+1]=1;}if(ran==1){map[x][3+1]=1;map[x][3+13+1]=1;}if(ran==2){map[x][3+1]=1;map[x][3+13+1]=1;map[x][3+2]=1;map[x][3+13+2]=1;map[x][3-1]=1;map[x][3+13-1]=1;}map[x][3]=1;map[x][3+13]=1;}}public void paintComponent(Graphics g){for(int i=0;i<30;i++)for(int j=0;j<20;j++){if(map[i][j]==0){//Color co = g.getColor();//g.setColor(Color.red);g.draw3DRect(20*i,20*j,20,20,true);//g.setColor(co);}else if(map[i][j]==3){}else {g.fill3DRect(20*i,20*j,20,20,true);}}Color co = g.getColor();g.clearRect(20*posx,20*posy,20,20);g.setColor(Color.red);g.fill3DRect(20*posx,20*posy,20,20,true);g.setColor(co);}public static void main(String args[]){new RoadPath();}}
解决方案
看这个代码片段好像没问题,发个完整的看看
解决方案二:
引用posx = 17; posy = 25; 引用g.fill3DRect(20*posx,20*posy,20,20,true); 已经超出你的坐标空间了,把posx,posy 改小或者加大frame的长宽,你就能看见红色方格了