Jdialog pour les images

Description

Voici un petit code qui permet, en utilisant un JDialog, de n'ouvrir que des fichiers images, avec un petit plus qui est la visualisation avant ouverture.

On y trouve 3 classes :
JFileFilter qui permet de créer des filtres
FilePreviewer permettant d'afficher l'image dans un JComponent
JMyFileChooser qui permet donc de créer un JDialog avec une visualisation d'images

Ce code permet de reconnaitre uniquement des images de types png, gif ou jpg (format reconnu d'emblé par le SDK).

Source / Exemple :


package myWindow;

/**

  • <p>Titre : JFileFilter</p>
  • <p>Description : Classe permettant de définir les extensions</p>
  • <p>Copyright : Copyright (c) 2003</p>
  • <p>Société : perso</p>
  • @author Indiana_jules
  • @version 1.0
  • /
//Importation des packages nécessaires import java.io.*; import java.util.*; public class JFileFilter extends javax.swing.filechooser.FileFilter{ //Variables globales protected String description; protected ArrayList exts = new ArrayList(); /**Constructeur par défaut*/ public JFileFilter() { } /**Méthode permettant de rajouter l'extension souhaité*/ public void addType(String s) { exts.add(s); } /**Méthode permettant de savoir si on accepte le fichier*/ public boolean accept(File f) { if(f.isDirectory()){ return true; } else if(f.isFile()){ Iterator it = exts.iterator(); while(it.hasNext()){ if(f.getName().endsWith((String)it.next())){ return true; } } } return false; } /**Méthode retournant la description du filtre*/ public String getDescription() { return description; } /**Méthode définissant la description de ce filtre*/ public void setDescription(String s) { description = s; } } ////////////////////////////////////////////////////////////////////////////////////////////// package myWindow; /**
  • <p>Titre : FilePreviewer</p>
  • <p>Description : Classe permettant d'afficher l'image dans un JFileChooser</p>
  • <p>Copyright : Copyright (c) 2003</p>
  • <p>Société : perso</p>
  • @author Indiana_jules
  • @version 1.0
  • /
//Importation des packages nécessaires import java.awt.*; import java.io.*; import java.beans.*; import javax.swing.*; import javax.swing.border.*; public class FilePreviewer extends JComponent implements PropertyChangeListener { //Variables globales ImageIcon thumbnail = null; /**Constructeur*/ public FilePreviewer(JFileChooser fc) { setPreferredSize(new Dimension(100, 50)); fc.addPropertyChangeListener(this); setBorder(new BevelBorder(BevelBorder.LOWERED)); } /**Méthode permettant le chargement des images*/ public void loadImage(File f) { if (f == null) { thumbnail = null; } else { ImageIcon tmpIcon = new ImageIcon(f.getPath()); if(tmpIcon.getIconWidth() > 90) { thumbnail = new ImageIcon( tmpIcon.getImage().getScaledInstance(90, -1, Image.SCALE_DEFAULT)); } else { thumbnail = tmpIcon; } } } /**Méthode appelé dans le cas d'un changement de fichier sélectionné*/ public void propertyChange(PropertyChangeEvent e) { String prop = e.getPropertyName(); if(prop == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) { if(isShowing()) { loadImage((File) e.getNewValue()); repaint(); } } } /**Permet de rafraîchir le component*/ public void paint(Graphics g) { super.paint(g); if(thumbnail != null) { int x = getWidth()/2 - thumbnail.getIconWidth()/2; int y = getHeight()/2 - thumbnail.getIconHeight()/2; if(y < 0) { y = 0; } if(x < 5) { x = 5; } thumbnail.paintIcon(this, g, x, y); } } } ////////////////////////////////////////////////////////////////////////////////////////////// package myWindow; /**
  • <p>Titre : JMyFileChooser</p>
  • <p>Description : Classe permettant d'afficher un explorateur que pour des
  • iamges .gif, .jpg, .png</p>
  • <p>Copyright : Copyright (c) 2003</p>
  • <p>Société : Perso</p>
  • @author Indiana_jules
  • @version 1.0
  • /
//Importation des packages nécessaires import javax.swing.JFileChooser; public class JMyFileChooser extends JFileChooser{ /**Constructeur par défaut*/ public JMyFileChooser() { super(); //Initialisation this.setFileSelectionMode(JFileChooser.FILES_ONLY); this.setDialogType(JFileChooser.OPEN_DIALOG); this.setDialogTitle("Ouvrir une image"); this.setApproveButtonText("Ouvrir"); this.setMultiSelectionEnabled(false); //Définition des extensions JFileFilter filtre = new JFileFilter(); filtre.addType("gif"); filtre.addType("png"); filtre.addType("jpg"); filtre.addType("jpeg"); filtre.setDescription("Fichiers image: .gif, .jpg, .jpeg, .png"); //On va faire un preview this.addChoosableFileFilter(filtre); this.setAccessory(new FilePreviewer(this)); } }

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.