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

NetBeans Java Discussion :

Incorporer Image Panel


Sujet :

NetBeans Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Incorporer Image Panel
    Bonjour, je n'arrive pas à incorporer une image dans un panel , mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void setPhoto(String photo) {
            txtPhoto.setText(photo);
            if(txtPhoto.getText().isEmpty()==false){
                panel.removeAll();      // pan : panel conteneur sur lequel on va coller le panel-image
                ImageIcon icone =  new ImageIcon(txtPhoto.getText());
                 JLabel ima = new JLabel(icone);        
                 panel.setSize(panel.getWidth(),panel.getHeight());
                 panel.add(ima);
                 panel.repaint(10);
                           // si nécessaire
           }
        }
    Bien sûr si vous avez un autre idée que le panel, je prend
    Cordialement
    Le temps est le pire enemi de l'homme

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    panel.setSize(panel.getWidth(),panel.getHeight());


    peut-être ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ima.setSize(panel.getWidth(),panel.getHeight());

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    Oui Merci , sa m'aide beaucoup, des petits détails et c'est bon. encore merci A +
    Le temps est le pire enemi de l'homme

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    Comme je te l'ai dis , cela marche très bien , par contre l'image n'est pas du tout redimensionné, c'est normal ?
    Le temps est le pire enemi de l'homme

  5. #5
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    essaie en mettant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.setLayout(new BorderLayout());

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    Il n'y a plus rien qui s'affiche,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.setLayout(new BorderLayout());
    , je le met avant ou après , ?

    rappel de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void setPhoto(String photo) {
            txtPhoto.setText(photo);
            if(txtPhoto.getText().isEmpty()==false){
     
                ImageIcon icone =  new ImageIcon(txtPhoto.getText());
                 JLabel ima = new JLabel(icone);
                 ima.setSize(panel.getWidth(),panel.getHeight());
                 panel.add(ima);
                 panel.setLayout(new BorderLayout());
     
               }
        }
    Le temps est le pire enemi de l'homme

  7. #7
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    c'est avant

    le BorderLayout ne redimensionnera pas l'image, mais seulement la centrera, puisque par défaut il ajoute au centre les composant dont on ne définit pas l'empacement

    le mieux pour incorporer une image à un JPanel c'est

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    j'ai regardé la FAQ pendant 15 min mais j'ai dû mal à comprendre, j'ai comme même fait ceci (j'ai mal à la tete )

    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
    public void setPhoto(String photo) {
            txtPhoto.setText(photo);
            if(txtPhoto.getText().isEmpty()==false){
     
                 img=toolkit.getImage(txtPhoto.getText());
                 buffinal=scale(img,panel.getWidth(),panel.getHeight());//buffinal declaré en BufferedImage
                 JLabel lab = new JLabel(buffinal); //probleme ICI !
                 panel.add(lab);
     
               }
        }
     
        public static Image scale(Image source, int width, int height) {
            /* On crée une nouvelle image aux bonnes dimensions. */
            BufferedImage buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
     
            /* On dessine sur le Graphics de l'image bufferisée. */
            Graphics2D g = buf.createGraphics();
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g.drawImage(source, 0, 0, width, height, null);
            g.dispose();
     
            /* On retourne l'image bufferisée, qui est une image. */
        return buf;
        }
    J'ai un probleme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      JLabel lab = new JLabel(buffinal); //probleme ICI ! , buffinal souligné
                 panel.add(lab);
    Le temps est le pire enemi de l'homme

  9. #9
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    t'es sûr d'avoir suivi le lien que j'ai donné, parce que ce que tu as écris n'as rien à voir!!

    je le remets, mais sans l'image http://www.developpez.net/forums/red...E_fond_fenetre

    et voici un petit exemple pour mettre une image de fond à un jpanel

    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
     
    import javax.swing.*;
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.awt.Graphics;
     
    public class TestBackgroundPanel {
     
    	public static void main(String[] args) {
     
    		BufferedImage imageBG = null;
    		try {
    			imageBG = ImageIO.read(new File("img.jpg"));
    		} catch (IOException ioe) {
    			ioe.printStackTrace();
    		}
    		MyPanel pn = new MyPanel(imageBG);
    		JFrame frm = new JFrame();
    		frm.setContentPane(pn);
    		frm.add(new JLabel("Un label pour le test"));
    		frm.setSize(400, 300);
    		frm.setVisible(true);
    	}
    }
     
    class MyPanel extends JPanel {
     
    	BufferedImage img;
     
    	MyPanel(BufferedImage img) {
    		super();
    		this.img = img;
    	}
     
    	public void paintComponent(Graphics g) {
    		g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
    	}
    }

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    désolé mais j'ai pas le niveau pour comprendre tout ce que fait le bout de code que tu m'a passé, comment je fais le lien entre :

    public void setPhoto(String photo) {
    txtPhoto.setText(photo);
    if(txtPhoto.getText().isEmpty()==false){

    //code où je définis l'image du panel avec txtPhoto.getText() -> chemin de l'image
    }
    }
    avec :

    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
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package contactliste;
     
    import javax.swing.*;
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.awt.Graphics;
     
    public class MonPanel {
     
    	public static void main(String[] args) {
     
    		BufferedImage imageBG = null;
    		try {
    			imageBG = ImageIO.read(new File("img.jpg"));
    		} catch (IOException ioe) {
    			ioe.printStackTrace();
    		}
    		MyPanel pn = new MyPanel(imageBG);
    		JFrame frm = new JFrame();
    		frm.setContentPane(pn);
    		frm.add(new JLabel("Un label pour le test"));
    		frm.setSize(400, 300);
    		frm.setVisible(true);
    	}
    }
     
    class MyPanel extends JPanel {
     
    	BufferedImage img;
     
    	MyPanel(BufferedImage img) {
    		super();
    		this.img = img;
    	}
     
        @Override
    	public void paintComponent(Graphics g) {
    		g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
    	}
    }
    Désolé de mon incompréhension
    Le temps est le pire enemi de l'homme

Discussions similaires

  1. [Débutant] Inclure et Changer Images panel
    Par synolog dans le forum C#
    Réponses: 2
    Dernier message: 14/11/2011, 20h04
  2. incorporation image icon
    Par TERRIBLE dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 04/01/2011, 01h59
  3. [image] dans un panel
    Par phoebe dans le forum Composants
    Réponses: 4
    Dernier message: 13/07/2004, 10h44
  4. Capture d'image d'un panel
    Par Akta3d dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/06/2004, 13h34
  5. Prob, images, Panels, et form.
    Par CaptainChoc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2003, 10h08

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