page précédantetable des matièrespage suivante
Images

    Chargement et affichage d'un image

Pour charger une image d'abord il faut creer un objet de la classe Image. Pour ca on a besoin de deux location:

La creation d'un objet et chargement l'image:
        Image image = getImage(baseURL, relLocation);

L'affichage de l'image se fait par la methode drawImage d'un objet Graphics:


la classe component "implemets" l'interface ImageObserver. Dans le cas d'execution d'un applet  c'est l'apllet qui joue la role d'ImageObserver, donc on doit utiliser la reference this.
 
 

Jouer un son dans une applet

Avant JDK 1.2, applets pouvaient jouer seulement des fichiers audio en Sun audio format (.au files). JDK 1.2 a introduit une nouvelle engine son qui support  des formats suivants: 

MIDI (type 0 and type 1)--The Musical Instrument Digital Interface, a digital format for musical instruments. 

RMF--The Rich Music Format, an audio file format created by Headspace, Inc. for online playback through the Beatnik plug-in. 

WAVE--The Microsoft Windows audio file format. 

AIFF--The Audio Interchange File Format, typically used with Macintosh and Silicon Graphics computers. 

AU--The Sun audio file format. 

Téléchargement

L'Interface AudioClip permet de représenter des sons. On peut créer une instance de cette classe en téléchargeant un fichier son. Cette opération est réalisée par la méthode getAudioClip (dans la classe Applet) qui peut prend deux formes :

Dans la première forme on donne en paramètres une URL complète, dans la seconde on donne une URL de base et un chemin relatif sous forme de chaîne de caractères. Si le fichier son se trouve dans le même dossier que l'applet on créera un objet son de la classe AudioClip en écrivant :

        son=getAudioClip(getCodeBase(),"monSon.au");

Jouer un son

Pour faire entendre le son associé à un objet de type AudioClip on dipose des méthodes suivantes :

import java.applet.*;
import java.awt.event.*; 
import java.awt.*; 

public class ImgScBarD extends Applet{ 
         Image n;
         Button ply,stp;
         AudioClip ding,fond;
         Scrollbar scrollbar,scrollbarV;
         int valueX=50,valueY=50;
         
         public void init(){
             n = getImage(getCodeBase(), "images/1_MAGIC.JPG");
             
             BorderLayout layout = new BorderLayout();
         setLayout(layout);

         ding=getAudioClip(getCodeBase(),"ding.au");
          fond=getAudioClip(getCodeBase(),"spacemusic.au");

          ply=new Button("Play");
          stp=new Button("Stop");

          ply.addActionListener(new SpPlay());
          add("West",ply);
          stp.addActionListener(new SpStop());
          add("South",stp);

         scrollbar = new Scrollbar(Scrollbar.HORIZONTAL,50, 20, 1, 100);

         //parametres: orientation, initValue, sizeBubble, minVal,maxVal
         
         scrollbarV = new Scrollbar(Scrollbar.VERTICAL,50, 10, 1, 100);

         scrollbar.addAdjustmentListener(new SB()); 
         add("North", scrollbar);

         scrollbarV.addAdjustmentListener(new SBV()); 
         add("East", scrollbarV);

         }

         class SB implements AdjustmentListener { 
           public void adjustmentValueChanged(AdjustmentEvent e) { 
               valueX = scrollbar.getValue();
               ding.play();
               repaint(); 
           }
      }

         class SBV implements AdjustmentListener { 
           public void adjustmentValueChanged(AdjustmentEvent e) { 
               valueY = scrollbarV.getValue();
               ding.play();
               repaint(); 
           }
        }

        class SpPlay implements ActionListener {
               public void actionPerformed(ActionEvent e){
                    fond.loop();
               }
        }

        class SpStop implements ActionListener {
                public void actionPerformed(ActionEvent e){
                     fond.stop();
                }
        }
      
         public void paint(Graphics g) { 
             g.drawImage(n, valueX, valueY,200,200, this); 
         } 
}

 

Image 1:

 

 

Card Exemple

import java.applet.*;
import java.awt.event.*;
import java.awt.*;
public class CardEx extends Applet{
   Image Card[] = new Image[5];
   Button ply,stp;
   AudioClip ding,fond;
   int wh=70,ht=100;
   int vX[]=new int[Card.length];
   int vY[]=new int[Card.length];
   boolean back[] = new boolean[Card.length];
   boolean ctch[] = new boolean[Card.length];
   int helpX,helpY,clicks;

   public void init(){
      setBackground(Color.green);
      for(int i=0; i<Card.length;i++){
         Card[i]=getImage(getCodeBase(),
                  "images/C"+i+".jpg");
         vX[i]=20+55*i;
         vY[i]=30;
         back[i]=ctch[i]=false;
      }
      addMouseListener(new MouseHandler());
      addMouseMotionListener(new MouseMotionHandler());
   }
   class MouseHandler extends MouseAdapter {
      public void mousePressed(MouseEvent e){
         helpX=e.getX(); helpY=e.getY();
         for(int i=0;i<Card.length;i++){
            if(chckIn(i,helpX,helpY)){
               ctch[i]=true;
               if(e.getClickCount()==2){
                  if(back[i])
                     Card[i]=getImage(getCodeBase(),
                                              "images/C"+i+".jpg");
                  else Card[i]=getImage(getCodeBase(),
                                              "images/Cback.jpg");
                  back[i]=!back[i];
                  repaint(vX[i],vY[i],wh,ht);
              }
          }
       }
       clicks=e.getClickCount();
       repaint();
      }
      public void mouseReleased(MouseEvent e){
          for(int i=0;i<Card.length;i++)
              ctch[i]=false;
          repaint();
     }
   }

 
  class MouseMotionHandler extends
                                     MouseMotionAdapter {
      public void mouseDragged(MouseEvent e){
         int x = e.getX();
         int y = e.getY();
         for(int i=0;i<Card.length;i++)
            if(ctch[i]) {
              vX[i]+=(x-helpX); vY[i]+=(y-helpY);
              repaint(vX[i],vY[i],wh,ht); helpX=x; helpY=y;
           }
     }
   }
   public void paint(Graphics g) {
       for(int i=0;i<Card.length;i++){
          g.drawImage(Card[i], vX[i], vY[i], wh,ht,this);
          g.drawRect(vX[i], vY[i], wh,ht);
       }
   }
   boolean chckIn(int ncard, int x, int y){
      if( (x>vX[ncard])&& (x< vX[ncard]+wh) &&
            (y> vY[ncard])&& (y< vY[ncard]+ht) ) return true;
      return false;
   }
}

 

import java.applet.*; 
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.Stack;

class CardObj{
Image card,cardBack;
int vx,vy;
static int cLarge=70,cHaut=100;
boolean back;

CardObj(int num,int x, int y,Applet place){
card=place.getImage(place.getCodeBase(),"images/C"+num+".jpg");
cardBack=place.getImage(place.getCodeBase(),"images/Cback.jpg");
vx=x; vy=y;
back=false;
}
void draw(Graphics g,Applet place){
if(!back)
g.drawImage(card,vx,vy,cLarge,cHaut,place);
else
g.drawImage(cardBack,vx,vy,cLarge,cHaut,place);
g.drawRect(vx, vy, cLarge,cHaut);

}
}
class PileCard extends Stack{
int vx,vy;
PileCard(int x, int y){
vx=x; vy=y;
}
boolean dansPile(int x, int y){
if( (x>vx)&&(x<vx+CardObj.cLarge))
if((y>vy) && (y<vy+CardObj.cHaut))
return true;
return false;
}
void push(CardObj card){
card.vx=vx;
card.vy=vy;
card.back=!card.back;
super.push(card);

}

}

class TablCard extends Vector{
int vx,vy;
static int dist=10;
TablCard(int x, int y, int d){
vx=x; vy=y; dist=d;
}
int indTabl(int x, int y){
for(int i=0; i < size(); i++){
if((x > vx+i*(CardObj.cLarge+dist))&& (x < vx+i*(CardObj.cLarge+dist)+CardObj.cLarge))
if((y > vy) && (y < vy+CardObj.cHaut))
return i;
}
return -1;
}
void addElement(CardObj card){
card.vx = vx+size()*(CardObj.cLarge+dist);
card.vy = vy;
super.addElement(card);
}
void deleteAt(int i){
for(int k =i+1; k<size(); k++)
((CardObj)get(k)).vx-=CardObj.cLarge+dist;
super.removeElementAt(i);
}

void draw(Graphics g,Applet place){
for(int i =0; i < size(); i++)
((CardObj)get(i)).draw(g,place);
}
}

public class PassEx extends Applet{
PileCard pileDep,pileDest;
TablCard bureau;

public void init() {
setBackground(Color.green);
pileDep=new PileCard(20,20);
pileDest= new PileCard(200,20);
bureau = new TablCard(20,200,10);
for(int i= 0;i<5;i++)
pileDep.push(new CardObj(i,pileDep.vx,pileDep.vy,this));
addMouseListener(new MouseHandler());
}
public void paint(Graphics g) {
if(!pileDep.empty()){
((CardObj)pileDep.peek()).draw(g,this);
}
if(!pileDest.empty()){
((CardObj)pileDest.peek()).draw(g,this);
}
if(!bureau.isEmpty()) bureau.draw(g,this);

}
class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent e){
int x=e.getX(), y=e.getY(), k;
if(pileDep.dansPile(x,y) && !pileDep.empty()){
pileDest.push((CardObj)pileDep.pop());
}
else if(pileDest.dansPile(x,y) && !pileDest.empty())
bureau.addElement((CardObj)pileDest.pop());
else if((k=bureau.indTabl(x,y))>=0){
pileDep.push((CardObj)(bureau.elementAt(k)));
bureau.deleteAt(k);

}
repaint();
}
}
}


page précédantetable des matièrespage suivante