IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Redimensionnement des images en Swing


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut Redimensionnement des images en Swing
    Bonjour,

    Décidément, moi et SWING ca fait trois...

    Bref là je suis en train d'essayer de mettre une image sur mon appli.
    Le probleme c'est que quand je l'insere telle quelle, elle est énorme!!!

    Moi ce que je voudrais c'est une petite image en hautt à gauche qui s'agrandit si on agrandit la fenetre et inversement.

    Alors pour cela je me sui sbien sur documentée et là j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JLabel img = new JLabel(new ImageIcon("XXXXX.jpg"));
    	int dimHeightFenetre = super.getSize().height/4;
    	int dimWidthFenetre = super.getSize().width/4;
    	System.out.println("dimwidth = " + dimWidthFenetre);
    	System.out.println("dimheight = " + dimHeightFenetre);
     
     
    	img.setBounds(10, 10, (int)dimWidthFenetre/4, (int)dimHeightFenetre/4);
    panel.add(img)
    Mais ça fait RIEN DU TOUT!!!!

    Alors soit je suis définitvement mauvaise, soit y'a un truc que j'ai pas compris...

    Je vous remercie beaucoup de l'aide que vous voudrez bien m'apporter...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    Voilà ou se situe mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    /**
     * Définition du panel
     * @return JPanel
     */
    public JPanel buildContentPane (){
    	final JPanel panel = new JPanel();
    	panel.setLayout(new BorderLayout());
    	//TEXTE DE BIENVENUE
     
    	JLabel label = new JLabel("Bienvenue... Veuillez spécifier les informations ci-dessous svp.");
    	JLabel img = new JLabel(new ImageIcon("XXXX.jpg"));
    	int dimHeightFenetre = super.getSize().height/4;
    	int dimWidthFenetre = super.getSize().width/4;
    	System.out.println("dimwidth = " + dimWidthFenetre);
    	System.out.println("dimheight = " + dimHeightFenetre);
     
     
    	img.setBounds(10, 10, (int)dimWidthFenetre/4, (int)dimHeightFenetre/4);
    	System.out.println("alignement = " +img.getAlignmentX());
     
    	//Creation des trois differentes listes
    	CommunesModelListe cml = new CommunesModelListe(false, "", "");
    	DepartementsModelListe dml = new DepartementsModelListe (false, "","");
    	LieuxDitsModelListe ldml = new LieuxDitsModelListe (false,"","");
     
    	//Create the combo boxes.
        final JComboBox ListeCommunes  = new JComboBox(cml.getListeCommunes());
        final JComboBox ListeDepartements  = new JComboBox(dml.getListeDepartements());
        final JComboBox ListeLieuxDits  = new JComboBox(ldml.getListeLieuxDits());
     
        //panel.setLayout(null);
        //ListeCommunes.setBounds(150, 50, 130, 30);
        //ListeDepartements.setBounds(150, 100, 130, 30);
     
    	//Lay out the demo.
        ListeCommunes.setPreferredSize(new Dimension(100, 30));
        ListeDepartements.setPreferredSize(new Dimension(100, 30));
       	ListeLieuxDits.setPreferredSize(new Dimension(100, 30));
     
       //add(ListeCommunes, BorderLayout.NORTH);
       //add(ListeDepartements, BorderLayout.WEST);
       //add(ListeLieuxDits, BorderLayout.EAST);
     
        //setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
     
    	//ajout des composants de la fenetre au panel
    	panel.add(label);
    	//panel.add(img);
    	panel.add(ListeDepartements, BorderLayout.NORTH);
    	panel.add(ListeCommunes, BorderLayout.CENTER);
    	panel.add(ListeLieuxDits, BorderLayout.SOUTH);
    et mes println affichent :

    dimwidth = 150
    dimheight = 100
    alignement = 0.0
    Voilà... Besoin de d'autres infos?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    Sisi pardon :
    là la ligne était commentée parce que ça m'énervait d'avoir cette super grosse image en plein milieu mais normalement c'est àa le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //ajout des composants de la fenetre au panel
    	panel.add(label);
    	panel.add(img);
    	panel.add(ListeDepartements, BorderLayout.NORTH);
    Désolée ...

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Bon y a du boulôt.

    1. Inutile de faire des setBounds si tu n'utilises pas le layout null (et utiliser le layout null n'est pas une bonne idée). Toujours est-il que là tu es en BorderLayout donc n'espère pas que ton code produise l'effet escompté.
    2. Faire 2x un add de suite sur un JPanel en BorderLayout sans préciser de contrainte va faire que seul le second ajout sera fait (il écrase le premier, cf ci-dessous)
    3. Tu dis t'être bien documenté mais là je ne vois rien qui redimensionne l'image. Plus d'infos ici : http://java.sun.com/docs/books/tutor...drawimage.html
    4. Il existe le JXImagePanel dans SwingX sinon, ça gère certains redimensionnements basiques.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	panel.add(label);
    	panel.add(img); // img écrase label
     
    	// ce code est équivalent :
    	panel.add(label, BorderLayout.CENTER);
    	panel.add(img, BorderLayout.CENTER); // img écrase label

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par jojodu31 Voir le message
    natha en fait je pense que le layout est une Box car y'a 2 sujets en cours ... saralix n'a peut etre pas mis son code à jour
    Ca ne change rien au fait qu'il y a un problème de base de compréhension des layouts.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    oui mais natha, comment ajouter une image sans que ça écrase le label?


    J'ai vraiment du mal... J'ai lu des choses sur les layouts, mais j'ai du mal à avoir une vue globale et à prendre du recul par rapport à ce que je lis pour le comprendre et l'intégrer...

    Désolée, je vous assure que j'y travaille...

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    On oublies souvent le : Validate() !!!
    Au niveau du composant graqhique que tu veux redimentionner!
    validate est une methode appartenant a la classe Component et c est l equivalent de: ' actualiser l affichage '

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    Merci tout d'abord pour vos réponses.

    J'ai essayé à partir de ce site : http://java.developpez.com/faq/gui/?...general_images de faire afficher mon image diminuée en taille.
    Cependant ça ne m'affiche rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package com.topodoc.interfaceGraphique;
     
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
     
    public class ImageXXX{
     
    	public void paintImage() {
    		/** Accès au toolkit : */
    		java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
    		/** lecture de l'image : */
    		Image imageSource = toolkit.getImage("XXXX.jpg");
     
    		/** Création d'une nouvelle image */
    		BufferedImage nouvelleImage = new BufferedImage(
    		                                          imageSource.getWidth(null),
    		                                          imageSource.getHeight(null),
    		                                          BufferedImage.TYPE_INT_RGB);
    		Graphics2D g2d = nouvelleImage.createGraphics();
    		/** préparation de la transformation */
    		AffineTransform at = new AffineTransform();
    		at.scale(0.5,0.5);
    		g2d.drawImage(imageSource,at,null);
    		g2d.dispose();
     
    	}
    }
    et je l'appelle dans une autre fonction d'une autre classe de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ImageXXXit = new ImageXXX();
    	it.paintImage();

    Et voilà je n'ai rien qui se met à l'écran .

    Notez que j'utilise un form layout pour ma fenetre de l'appli.

    Merci pas avance pour votre précieuse aide...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    Voilà dans mon LayoutForm avec Swing, je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.add(new JLabel(new ImageIcon("Logo_Tigf.jpg")), cc.xy(1,1));
    Seulement le logo est trop gros!! Et je n'arrive pas à faire un scale...

    Je n'ai pas besoin de travailler plus le logo, juste de le rapetir...

    Svp aidezmoi! Je suis coincée et je n'arrive pas à m'en sortir alors que je dois rendre au plus vite cette appli!

  10. #10
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Je t'ai donné les liens vers ce qu'il faut. Tu devrais pouvoir t'en sortir avec.
    Sinon fait une recherche sur le forum, le sujet de redimensionnement d'image a déjà été traité plus d'une fois.

Discussions similaires

  1. [Tableaux] Redimensionner des images sur un site
    Par Ubum dans le forum Langage
    Réponses: 9
    Dernier message: 24/08/2007, 17h21
  2. Réponses: 11
    Dernier message: 23/08/2007, 17h26
  3. Redimensionner des images et les sauvegarder
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/08/2007, 15h43
  4. redimensionner des images
    Par moabomotal dans le forum Modules
    Réponses: 4
    Dernier message: 21/11/2006, 11h12
  5. [Traitement d'image] Redimensionner des images
    Par mireilleturrel dans le forum Webdesign & Ergonomie
    Réponses: 3
    Dernier message: 15/05/2006, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo