Soyez le premier à donner votre avis sur cette source.
Vue 12 508 fois - Téléchargée 1 271 fois
import javax.imageio.*; import javax.swing.*; import java.awt.*; import java.io.*; public class JImagePanel extends JPanel { private static final long serialVersionUID = 2724980460740151616L; private Image _image; private int _x; private int _y; private boolean _autoSize; private boolean _keepAspect; public JImagePanel(File file, int x, int y, boolean autoSize, boolean keepAspect) throws IOException { super(); setImage(ImageIO.read(file)); setX(x); setY(y); setAutoSize(autoSize); setKeepAspect(keepAspect); } public JImagePanel(File file, int x, int y, boolean autoSize) throws IOException { this(file, x, y, true, false); } public JImagePanel(File file, int x, int y) throws IOException { this(file, x, y, true); } public JImagePanel(File file) throws IOException { this(file, 0, 0, true); } public JImagePanel(Image image, int x, int y, boolean autoSize, boolean keepAspect) { super(); setImage(image); setX(x); setY(y); setAutoSize(autoSize); setKeepAspect(keepAspect); } public JImagePanel(Image image, int x, int y, boolean autoSize) { this(image, x, y, true, false); } public JImagePanel(Image image, int x, int y) { this(image, x, y, true); } public JImagePanel(Image image) { this(image, 0, 0, true); } public JImagePanel() { super(); setX(0); setY(0); setImage(null); setAutoSize(false); } public void setImage(Image image) { _image = image; } public void setX(int x) { _x = x; } public void setY(int y) { _y = y; } public void setAutoSize(boolean autoSize) { _autoSize = autoSize; } public void setKeepAspect(boolean keepAspect) { _keepAspect = keepAspect; } public void paintComponent(Graphics g) { super.paintComponent(g); if (_image != null) { if (!_autoSize) { g.drawImage(_image, _x, _y, _image.getWidth(null), _image.getHeight(null), null); } else { Graphics2D g2d = (Graphics2D) g; Double scaleWidth = new Double(getWidth()) / new Double(_image.getWidth(null)); Double scaleHeight = new Double(getHeight()) / new Double(_image.getHeight(null)); if (_keepAspect) { if (scaleWidth > scaleHeight) { scaleWidth = scaleHeight; } else { scaleHeight = scaleWidth; } } g2d.scale(scaleWidth, scaleHeight); g2d.drawImage(_image, _x, _y, null); } } } }
21 juin 2009 à 18:46
De toute façon, ta façon de faire n'est pas la bonne : ca ne marchera que tant que le fichier existera, et qu'il sera placé sur le bureau du user "Administrateur" => gros risque qu'un beau jour le fichier soit supprimé ou déplacé.
Privilégie une image contenue dans le jar de ton application : beaucoup plus sûr !
21 juin 2009 à 15:12
est ce que l'image doit être dans le même dossier que mon projet
voici le code ou j'ai fais l'appel à ta classe
------------------------------------------------------------
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
public class NewJFrame extends javax.swing.JFrame {
File file = new File("C:/Documents and Settings/Administrateur/Bureau/me.JPG");
Image image ;
JImagePanel i= new JImagePanel();
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
try {
image = ImageIO.read(file);
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
i.setImage(image);
i.setX(20);
i.setY(30);
this.add(i);
}
---------------------------------------------------------------------------
Merci
12 avril 2007 à 06:53
Pour ce qui est de l'affichage en mosaïque : je n'en voyais pas l'intérêt pour l'utilisation que j'en ai, mais ca doit pas être grand chose à faire (tout comme faire un zoom par exemple).
DarK Sidious
12 avril 2007 à 02:51
Me suis fait un petit composant pareil...mais sans la possibilité de déplacer l'origine de l'image. Par contre g donné la possibilité en plus de mettre l'image en mosaique...
Par contre, il y a juste un petit souci : JPanel est serializable, et si tu enregistre l'image telle qu'elle elle va prendre énormément de place... moi je l'ai rendu transient histoire de mais bon... toi dans ton cas je pense qu'il y a moyen de faire mieux en serialisant le fichier...(je ne sais pas ce que ca donne ca par contre)
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.