Jdialog pour les images

Soyez le premier à donner votre avis sur cette source.

Vue 11 185 fois - Téléchargée 1 122 fois

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

Ajouter un commentaire

Commentaires

indiana_jules
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
18 -
Salut
désolé du retard, je ne passe plus souvent sur cette source. Voici un exemple :
public void actionPerformed(ActionEvent e) {
JMyFileImageChooser choose = new JMyFileImageChooser(
JMyFileImageChooser.MY_OPEN_DIALOG);
int valeur = choose.showOpenDialog(null);

if (valeur == JMyFileImageChooser.APPROVE_OPTION) {
jbset(choose.getSelectedFile().getAbsolutePath(),
getSpecifiedHeight(), getSpecifiedWidth());
}
}
cs_rem02
Messages postés
15
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
30 avril 2007
-
bonsoir,
quelqu'un pourrait-il mettre un exemple d'utilisation.
merci
indiana_jules
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
18 -
ya pas de quoi ;p
littlebeetle
Messages postés
3
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
4 octobre 2005
-
Tout simplement nickel chrome exactement ce que je recherchais.
Je me suis permis tout de même de modifier un tout petit peu JMyFileChooser.java pour mes besoins personnels.
Notamment
this.setAcceptAllFileFilterUsed(false);//Pour ne pas permettre de sélectionner autre chose qu'un fichier image.

Merci encore.

Joss.

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.