请教各位,我使用paintComponet()方法来实hannoi塔问题(可以自动演示塔的搬运过程),使用这个方法来绘制塔和塔点,塔高及塔点的个数通过一个参数(变量)传递给这个方法所在的类,paintComponent()方法再根据传进来的参数的值绘制塔高和塔点,一开始运行正常,若参数值改变,paintComponent()方法却无法正常跟着改变,即使用改变后的参数值来绘制,请问这是为什么?该如何解决?

解决方案 »

  1.   

    paintComponent(Graphics g)方法如下,其中dNumber为代表盘子数的变量,在程序的运行过程中变化
    public void paintComponent(Graphics g)                     
       {
         super.paintComponent(g);
         //画出塔形(point[0]为第0个塔点,getx,gety得到塔点的坐标)
         g.setColor(Color.blue);
         g.fillRoundRect(point[0].getX()-4,point[0].getY()-27,8,27*dNumber,2,3);     
         g.fillRoundRect(point[dNumber].getX()-4,point[dNumber].getY()-27,8,27*dNumber,2,3); 
         g.fillRoundRect(point[2*dNumber].getX()-4,point[2*dNumber].getY()-27,8,27*dNumber,2,3);           
         //画出塔的基座
       int leftx=point[dNumber-1].getX()-width/2;
         int lefty=point[dNumber-1].getY();
         int w=(point[3*dNumber-1].getX()+width/2)-(point[dNumber-1].getX()-width/2);
         int h=height/2;
         g.setColor(Color.red);
         g.fillRect(leftx,lefty,w,h);
         g.setColor(Color.pink);
         int size=4;
         //画出塔点
         for(int i=0;i<3*dNumber;i++)                                    
           {
             g.fillOval(point[i].getX()-size/2,point[i].getY()-size/2,size,size);
           }
         g.setColor(Color.blue);  
         g.drawString(""+towerName[0]+"塔",point[dNumber-1].getX()-10,point[dNumber-1].getY()+30);
         g.drawString(""+towerName[1]+"塔",point[2*dNumber-1].getX()-10,point[dNumber-1].getY()+30);
         g.drawString(""+towerName[2]+"塔",point[3*dNumber-1].getX()-10,point[dNumber-1].getY()+30);
        
        } 
    请各位帮我看看吧
      

  2.   

    编译器通过,只是一开始运行正常,若参数值改变,paintComponent()方法却无法正常跟着改变,即使用改变后的参数值来绘制