Applet diaporama avec selection dossier photo

Description

Le programme java suivant allié à un fichier texte permet,de visionner des photos, en sélectionnant au préalable un dossier.

Source / Exemple :

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.URL;

import javax.swing.JComboBox;
import javax.swing.JLabel;



public class Test extends Applet implements ActionListener,KeyListener {
	int compteur, nbim,se;
	boolean isStandalone = false;
	String fic,titre,fic2,sel,fic3;
	BorderLayout borderLayout1 = new BorderLayout();
	Panel panel1 = new Panel();
	FlowLayout flowLayout1 = new FlowLayout();
	Button precButton = new Button();
	Button suivButton = new Button();
	Label compteurLabel = new Label();
	Panel panel2 = new Panel();
	Label titreLabel = new Label();
	FlowLayout flowLayout2 = new FlowLayout();
	ImPane imagePanel = new ImPane(this);
	BorderLayout borderLayout2 = new BorderLayout();
	Label commentaireLabel = new Label();
	MediaTracker tracker = new MediaTracker(this);
	String bgcolor, title_color, text_color;

	Vector nomimages, commentairesImages;
	
	FlowLayout flowLayout3 = new FlowLayout();
	BorderLayout borderLayout3 = new BorderLayout();
	Panel panel3 = new Panel();
	JComboBox combo = new JComboBox();
	JLabel label3 = new JLabel("Une ComboBox");
	JLabel label4 = new JLabel("Selectionner un dossier photo :");
	String tab[] = {"dossier1","Dossier2","Dossier3"};
	public String tab2[] = {fic,fic2,fic3};
	int selection;
	
	
	

	//Obtenir une valeur de paramètre
	public String getParameter(String key, String def) 
		{
	  	return isStandalone ? System.getProperty(key, def) :
	    		(getParameter(key) != null ? getParameter(key) : def);
		}


	//Construire l'applet
	public Test() {
	}


	//Initialiser l'applet
	public void init() 
		{
  		try {
    		fic = this.getParameter("file", "");
    		fic2 = this.getParameter("file2", "");
    		fic3 = this.getParameter("file3", "");
   	 	//titre = this.getParameter("title", "");
   	 	bgcolor = this.getParameter("bgcolor", "black");
    		title_color = this.getParameter("title_color", "white");
    		text_color = this.getParameter("text_color", "white");
    		jbInit();
    		
		lireListeFichier(se);
  		}
		catch(Exception e) 
			{
    			e.printStackTrace();
  			}

		}



	//Initialiser le composant
	private void jbInit() throws Exception 
		{
		label4.setPreferredSize(new Dimension(250,20));
	    combo.setPreferredSize(new Dimension(100,20));  

		combo = new JComboBox(tab);
  
			combo.addActionListener(this);
			combo.requestFocus();
   
  		this.setLayout(borderLayout1);
  		panel1.setLayout(flowLayout1);
		precButton.setFont(new java.awt.Font("Dialog", 3, 12));
 		precButton.setLabel("Précédent");
      		precButton.addActionListener(this);
   		precButton.addKeyListener(this);
  		precButton.requestFocus();
     		compteurLabel.setText("	     ");
  		compteurLabel.setFont(new java.awt.Font("Dialog", 1, 14));
  		suivButton.setFont(new java.awt.Font("Dialog", 3, 12));
  		suivButton.setLabel("Suivant");
      		suivButton.addActionListener(this);
    		suivButton.addKeyListener(this);
  		suivButton.requestFocus();
 	
  		Color col = (Color) Class.forName("java.awt.Color").getField(title_color).get(null);
  	
  		panel2.setLayout(flowLayout2);
  		imagePanel.setLayout(borderLayout2);
  		this.add(panel1, BorderLayout.SOUTH);
  		panel1.add(precButton, null);
      		panel1.add(compteurLabel);
  		panel1.add(suivButton, null);
  		
  		this.add(panel2, BorderLayout.NORTH);
  		panel2.add(label4,null);
  		panel2.add(combo,null);
  		
  		   	Panel tempo = new Panel(new BorderLayout());
      		tempo.add(imagePanel, BorderLayout.CENTER);
      		commentaireLabel.setFont(new java.awt.Font("Dialog", 1, 16));
      		commentaireLabel.setAlignment(Label.CENTER);
      		col =  (Color) Class.forName("java.awt.Color").getField(text_color).get(null);
      		commentaireLabel.setForeground(col);
      		precButton.setForeground(col);
      		suivButton.setForeground(col);
      		compteurLabel.setForeground(col);

      		tempo.add(commentaireLabel,"South");

  		this.add(tempo, BorderLayout.CENTER);

      		col =  (Color) Class.forName("java.awt.Color").getField(bgcolor).get(null);
  		setBackground(col);
		}

	//Lit les noms des images a afficher
	private void lireListeFichier(int sel2)
	
      		{
		selection=sel2;
      		try
              		{
      			
      			    String tab2[] = {fic,fic2,fic3};
      			    sel=tab2[selection];
              		compteur = nbim = 0;
              		InputStream in = new URL(getDocumentBase(),sel).openStream();			      
			BufferedReader br  = new BufferedReader(new InputStreamReader(in));
              		String line;
              		StringTokenizer tok;
              		nomimages = new Vector();
              		commentairesImages = new Vector();
              		while ( (line = br.readLine()) != null)
        	      		{
        	      		nbim++;
        	      		tok = new StringTokenizer(line);
        	     		 //titreLabel.setText(tok.nextToken());
        	      		nomimages.addElement(tok.nextToken());
        	      		if ( (tok.hasMoreTokens()) )
        				if ( tok.nextToken().equals("{"))
        		      			commentairesImages.addElement(tok.nextToken("}"));
        				else
        		      			commentairesImages.addElement("");
        	      		else 
        		      		commentairesImages.addElement("");
        	      
        	      		}
              		}
      		catch (IOException ex) 
			{}
      		}


	//Démarrer l'applet
	public void start() 
		{
		
  		Image im = getImage(getDocumentBase(),(String) nomimages.elementAt(0));
		tracker.addImage(im,0);
		try { tracker.waitForID(0) ; } catch (InterruptedException ex) {}
		imagePanel.setImage(im);
      		commentaireLabel.setText((String) commentairesImages.elementAt(0));
  		compteurLabel.setText((compteur+1)+"/"+nbim);
		requestFocus();
		}

	//Arrêter l'applet
	public void stop() {
	}

	//Détruire l'applet
	public void destroy() {
	}

	//Obtenir les informations d'applet
	public String getAppletInfo() {
	  return "Information applet";
	}

	//Obtenir les informations de paramètre
	public String[][] getParameterInfo() 
		{
  		String[][] pinfo = { {"nomfic", "String", ""}, };
  		return pinfo;
		}


	private void changeImage()
		{
		//lireListeFichier(se);
		Image im = getImage(getDocumentBase(),(String) nomimages.elementAt(compteur));
  		tracker.addImage(im,0);
  		try { tracker.waitForID(0) ; } catch (InterruptedException ex) {}    imagePanel.setImage(im);
		commentaireLabel.setText((String) commentairesImages.elementAt(compteur));	
    		compteurLabel.setText((compteur+1)+"/"+nbim);
		}

	public void actionPerformed(ActionEvent evt) 
		{
        if (evt.getSource() == combo)
		{
        	JComboBox cb = (JComboBox)evt.getSource();
            se = (int)cb.getSelectedIndex();
		lireListeFichier(se);
		changeImage();
		}
    else
    {
    	if (evt.getSource() == precButton)
			compteur = Math.max(0,--compteur);
		else if (evt.getSource() == suivButton)
			compteur = Math.min(nbim-1,++compteur);


		changeImage();

    }

		}
		
		
	
	
		
	
	public void keyPressed(KeyEvent e){
}
	public void keyReleased(KeyEvent e){}
	public void keyTyped(KeyEvent e)
		{
		//System.out.println("toto "+e.getKeyChar());
		if ( (e.getKeyChar() == '+') || (e.getKeyChar() == KeyEvent.VK_KP_RIGHT)  || (e.getKeyChar() == KeyEvent.VK_RIGHT) )
			{
			compteur = Math.min(nbim-1,++compteur);
			changeImage();
			}
		else if ( (e.getKeyChar() == '-')  || (e.getKeyChar() == KeyEvent.VK_KP_LEFT)  || (e.getKeyChar() == KeyEvent.VK_LEFT) )
			{
			compteur = Math.max(0,--compteur);
			changeImage();
			}
  		precButton.requestFocus();
  		suivButton.requestFocus();


		}

}

class ImPane extends Panel
{
	Test mere;
	Image im;
	int x0,y0,w,h;


	public ImPane(Test v)
		{
		mere = v;
		this.setLayout(new BorderLayout());
		}

	public void setImage(Image im)
		{
		this.im = im;
		repaint();
		}
	
	public void paint(Graphics g)
		{
		x0 = y0 = 10;
		if ( ((h=im.getHeight(null)) < getSize().height) && ((w=im.getWidth(null)) < getSize().width) )
			{
			x0 = getLocation().x + (getSize().width-w)/2;
			y0 = getLocation().y + (getSize().height-h)/2;
		
			}
		else 
			{
			w = getSize().width -20;
			h = getSize().height-20;
			}
		//g.drawString(Integer.toString(im.getHeight(null)),10,10);
		//g.drawString(Integer.toString(getSize().height),10,50);
		g.drawImage(im,x0,y0,w,h,null);
		}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.