public void agregarLinea(int p1,int p2,Color pColor,int pStroke)
   {  int i=nConexiones;
      if(p1>=nVertices||p2>=nVertices) return;
      if(i>=MAXConexiones) if(aConexiones==null)
      {  MAXConexiones=100;
         aConexiones=new int[MAXConexiones];
         aColores=new Color[MAXConexiones];
         aStrokes=new Stroke[MAXConexiones];
      }else
      {  MAXConexiones*=2;
         int nv[]=new int[MAXConexiones];
         System.arraycopy(aConexiones,0,nv,0,aConexiones.length);
         aConexiones=nv;
      }
      if(p1>p2)
      {  int t=p1;
         p1=p2;
         p2=t;
      }
      aConexiones[i]=(p1<<16)|p2;
      aColores[i]=pColor;
      switch(pStroke)
      {  case 0: aStrokes[i]=new BasicStroke(1f); break;
         case 1: aStrokes[i]=new BasicStroke(1f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL, 1f, new float[]{10f,5f},10f); break;
         case 2: aStrokes[i]=new BasicStroke(10f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL); break;
         case 3: aStrokes[i]=new BasicStroke(1f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL, 1f, new float[]{10f,5f},10f); break;
         default:aStrokes[i]=new BasicStroke(1f); break;
      }
      nConexiones=i+1;      
   }