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 :

[SWING]affichage d'une image


Sujet :

AWT/Swing Java

  1. #41
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Bon g repris ton code, et g corrigé ce qui me semblai faux. Et g viré les XYLayout parce que je travaille avec Java 1.4.2. Ca marche nickel. Maintenant à toi de le modifier pour en faire ce que tu veux vraiment.

    Le fichier myJPanel :

    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
    public class myJPanel extends JPanel
    {
    	int h_f, l_f;//hauteur fenetre, largeur fenetre
    	public Image img;
     
    	myJPanel(int posx,int posy,int largeur, int hauteur, String nomImage)
    	{
    		super(null);
    		h_f = hauteur;
    		l_f = largeur;
     
    		img = this.getToolkit().createImage("chemin de l'image");
     
    		setSize(l_f, h_f);
    		setVisible(true);
    	}
     
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		g.drawImage(img,0,0,this);
    	}
    }
    le fichier myJFrame:
    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
    public class myJFrame extends JFrame {
        Container f;
        myJPanel interieur;
     
        public myJFrame() {
            super();
            f = getContentPane();
        }
     
        public void create_fenetreFS(String nomFenetre,int posx, int posy ,int largeur, int hauteur,String nomImage) {
            setTitle(nomFenetre);
            setUndecorated(false);
            setLocation(posx,posy);
            interieur = new myJPanel(posx,posy,largeur, hauteur, nomImage);
     
     
            f.setSize(largeur, hauteur); 
        }
     
        public void afficher()
        {
            setResizable(true);
            setVisible(true);
            show();
            pack();
        }
    }
    et le fichier menuPrincipal :

    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
    public class menuPrincipal extends myJFrame{
     
    	JButton b_creer = new JButton("CREER UNE ANIMATION");;
    	Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    	int max_largeur = (int)tailleEcran.getWidth();
    	int max_hauteur = (int)tailleEcran.getHeight();
     
    	public menuPrincipal() {
    		super();
    		try {
    			InitMenu();
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
     
    	private void InitMenu() throws Exception {
     
    		create_fenetreFS("Menu Principal",0,0,max_largeur,max_hauteur,"images/fond1280x1024.jpg");
     
    		/*ajout d'écouteurs d'evenements sur les boutons*/
    		//b_creer.addActionListener(this);
     
    		/*ajout des boutons dans la fenetre*/
    		b_creer.setSize(80,20);
    		b_creer.setLocation(100,100);
    		interieur.add(b_creer);
    		f.add(interieur);
    	}
    	public static void main(String[] args) {
    		menuPrincipal mp = new menuPrincipal();
    		mp.afficher();
    	}
    }
    Si avec ca, ca ne marche pas, c vraiment que Java ne veu pas de toi. Ou alors jete ta bécane par la fenêtre.

    Merci qui :
    ++

  2. #42
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    bon bah tu sais quoi, je pense que je vais aller me pendre parce que ça marche toujours pas

  3. #43
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Je suis désolé mais là je peux vraiment plus rien pour toi, ton cas est vraiment désespéré.
    Il fait pareil qu'avant ?
    Ou l'erreur à changer.
    Pas de message d'erreur dans la console?

  4. #44
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    aucun message d'erreur.... en fait, le seul probleme que je rencontre c'est sur la premiere fenetre lancée. parce qu'ensuite le fond d'écran s'affiche nickel sur les autres fenetres.... bon c'est pas grave, je verrai ça plus tard.
    merci quand meme pour votre aide

  5. #45
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    au passage ne voulant pas creer un nouveau post, j'aimerai avoir votre avis sur une petite question. (je debut en java)
    je cherche à inserer une image en fond de fenetre , pour cela je suis obligé "de créer un nouveau composant héritant de JComponent et de surcharger la méthode paintComponent"....j'ai donc repris le code mis en FAQ.

    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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class MonPanel extends JComponent
    {
     /** variable de classe contenant l'image à afficher en fond */
     private Image bg;
     
     MonPanel( Image bg )
              {
              this.bg = bg;
              }
     /** Surcharge de la fonction paintComponent() pour afficher notre image */
     public void paintComponent(Graphics g)
           {
           g.drawImage(bg,0,0,null);
           }
    }
    par la suite j'ai essayé "d'instancier" mon objet de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Image bg= new Image ( "C:\\jain\\proxy\\images\\interface.jpg");
    ce qui génére une erreur du compilateur...

    j'aimerai connaitre la demarche à suivre (ou lien vers un tutoriel) me permettant la poursuite de cette demarche...
    merci

  6. #46
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Ben regarde un peu plus haut dans cette page du post il y a le code pour instancier une image à partir de son fichier, et ensuite la mettre en fond d'un JPanel (ca sera la même chose pour un autre composant)

  7. #47
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Voila, c'est fait je viens d'initaliser mon image...seul bémol l'image n'apparait pas sauf lorsque je redimensionne ma fenetre.
    Pourriez vous m'en expliquer la raison.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     Image monImage = Toolkit.getDefaultToolkit().createImage("c:\\jain\\proxy\\images\\interface.jpg");
            firstPanel=new MonPanel(monImage);
            // Top, left, bottom, right
          firstPanel.setBorder(BorderFactory.createEmptyBorder(50,50,50,50));
            // If put to False: we see the container's background
            firstPanel.setOpaque(true);
            firstPanel.setBackground(containerBackGroundColor);
            //rows, columns, horizontalGap, verticalGap
            firstPanel.setLayout( new BorderLayout() );
     
            container.add(firstPanel);

  8. #48
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Ce code la a l air correct, montre plutot le code de MonPanel

  9. #49
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Voici le code de MonPanel

    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
     
    import javax.swing.*;
    import java.awt.*;
     
    public class MonPanel extends JPanel
    {
     /** variable de classe contenant l'image à afficher en fond */
     
     private Image bg;
     
     MonPanel( Image bg )
              {
              this.bg = bg;
              }
     
     /** Surcharge de la fonction paintComponent() pour afficher notre image */
     public void paintComponent(Graphics g)
           {
           g.drawImage(bg,0,0,null);
           }
    }

  10. #50
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    ca vient de ta méthode paintComponent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void paintComponent(Graphics g)
           {
           super.paintComponent(g);
           g.drawImage(bg,0,0,this);
           }

  11. #51
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    essaye un updateUI() de ton panel

  12. #52
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    En effet le probleme venait de la methode paintComponent, ca marche nickel.
    merci @ tous et plus particulierement à barbu0055


    Cependant j'ai preferé redifinir comme suit ma methode de paint component:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void paintComponent(Graphics g)
           {
           super.paintComponent(g);
           g.drawImage( bg, 0, 0,getSize().width, getSize().height, this );
           }
    Ainsi j'autorise le redimensionnement de mon image de fond et bizarrement elimine certains bugs.

Discussions similaires

  1. affichage d'une image avec du swing
    Par burzno dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 26/05/2007, 18h04
  2. Réponses: 2
    Dernier message: 27/12/2004, 09h23
  3. Pbs d'affichage d'une image sur un panel
    Par ysr1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/09/2004, 09h55
  4. [FLASH MX] Qualité d'affichage d'une image
    Par n_tony dans le forum Flash
    Réponses: 3
    Dernier message: 16/08/2004, 09h44
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41

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