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 :

image sur menu


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Par défaut image sur menu
    J'ai une fenêtre principale contenant un menu et une image de fond.
    Mon problème étant que ma barre de menu ne s'affiche pas car elle passe sous l'image.
    Voici le code de ma fenetre
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.sql.Connection;
    import java.sql.SQLException;
     
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
     
    public class FenetrePrincipale extends JFrame implements ActionListener
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	//variable pour la construction de la barre de menu
    	JMenuBar menuBar;
    	JMenu menuDemarrer;
    	JMenuItem menuConsulterPersonne,menuInsererPersonne,menuRechercherPersonne,menuQuitter;
     
    	Toolkit test;
    	Dimension dim;
    	JDesktopPane panelPrincipale;
    	AffichageImage imageAffiche; 
    	public FenetrePrincipale()
    	{
     
    		test= Toolkit.getDefaultToolkit();
    		dim=new Dimension();
    		dim=test.getScreenSize();
     
     
    //		jpanel
    		panelPrincipale =new JDesktopPane();
    		panelPrincipale.setBounds(0,0,800,640);
    		imageAffiche = new AffichageImage("imagePrincipale.jpg",panelPrincipale);
    		this.add(imageAffiche);
     
    		constructionFrame();
    		this.addWindowListener(new WindowAdapter()
    		{
    			public void windowClosing(WindowEvent e)
    			{
    				System.exit(0);
    			}
    		});
     
     
    	}
    	public void constructionFrame()
    	{
     
     
    		//	construction de la barre de menu
    		menuBar=new JMenuBar();
    		menuDemarrer=new JMenu("Demarrer");
     
     
    		menuConsulterPersonne=new JMenuItem("Consulter les personnes");
    		menuConsulterPersonne.addActionListener(this);
     
    		menuInsererPersonne=new JMenuItem("Inserer une personne");
    		menuInsererPersonne.addActionListener(this);
     
    		menuRechercherPersonne=new JMenuItem("Rechercher une personne");
    		menuRechercherPersonne.addActionListener(this);
     
    		menuQuitter=new JMenuItem("Quitter");
    		menuQuitter.addActionListener(this);
     
    		menuDemarrer.add(menuConsulterPersonne);
    		menuDemarrer.addSeparator();
    		menuDemarrer.add(menuInsererPersonne);
    		menuDemarrer.addSeparator();
    		menuDemarrer.add(menuRechercherPersonne);
    		menuDemarrer.addSeparator();
    		menuDemarrer.add(menuQuitter);
     
     
    		menuBar.add(menuDemarrer);
    		menuBar.setBounds(10,10,400,400);
    		menuBar.setVisible(true);
    		this.setJMenuBar(menuBar);
    		this.getContentPane().add(panelPrincipale);
     
    		//attribut de la fenetre
    		this.setSize(800,640);
    		this.setVisible(true);
     
    		this.setLocation((dim.width-this.getWidth())/2,(dim.height-this.getHeight())/2);
    		this.setTitle("Gestion des larges objects binary");
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		if(e.getSource()==menuConsulterPersonne)
    		{
    			String requete=new String("Select * from personne order by id_personne asc");
    			FenetrePersonnel fenetreInfo=new FenetrePersonnel(this.connec,requete);
    		}
    		if(e.getSource()==menuInsererPersonne)
    		{
    			FenetreInsertionPersonne fenetreInsert=new FenetreInsertionPersonne(this.connec);
    		}
    		if(e.getSource()==menuRechercherPersonne)
    		{
    			FenetreRecherche fenetreRecherche=new FenetreRecherche(this.connec);
    		}
    		if(e.getSource()==menuQuitter)
    		{
    			try {
    				this.connec.close();
    			} catch (SQLException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    			System.exit(0);
    		}
    	}
    }
    Voici le code pour afficher l'image
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    import java.awt.Canvas;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
     
    import javax.swing.JDesktopPane;
     
     
    public class AffichageImage extends Canvas
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	//Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    	int largeurEcran ;//= screenSize.width;
    	int hauteurEcran;// = screenSize.height;
    	Image image,imageScaled;
    	int larg,longr;
     
    	public AffichageImage(String url,JDesktopPane panelPhoto) 
    	{
     
    		larg=panelPhoto.getWidth();
    		longr=panelPhoto.getHeight();
    		image = Toolkit.getDefaultToolkit().getImage(url);
     
     
    		largeurEcran = image.getWidth(this);
    		hauteurEcran = image.getHeight(this);
     
    		imageScaled = image.getScaledInstance(panelPhoto.getWidth(),panelPhoto.getHeight() , image.SCALE_DEFAULT);
    		this.prepareImage(imageScaled, this);
    	}
     
    	public void paint(Graphics g) 
        {
    		g.drawImage(imageScaled, 0, 0, this);
        }
     
     
    	public boolean imageUpdate(Image image, int info, int x, int y, int l, int h) 
        {
    	//	int rapport=0;
    	/*	if((l!=0) && (h!=0))
    		{
    			if(l>h)
    			{
    				rapport=l/this.larg;
    			}
    			else
    			{
    				rapport=h/this.longr;
    			}
     
    			l=l/rapport;
    			h=h/rapport;
    		}
    		*/
     
     
    		if ((info & (WIDTH | HEIGHT)) != 0) 
    		{
     
    			setSize(larg,longr);
    		}
     
    		if ((info & (ALLBITS)) != 0) 
    		{
    			repaint();
    			return false;
    		}
    		else 
    		{
    			return true;
    		}
        }
     
    }
    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il ne faut pas mélanger Swing et AWT, or c'est ce que tu fais. (cf la FAQ GUI). Canvas est un composant AWT et non swing comme le reste de ton appli.

    Remplace ton Canvas par un JPanel et le paint par paintComponent (tout en gardant le même code à l'intérieur) et tout ira mieux...

  3. #3
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Par défaut <ok, ca fonctionne>
    Merci j'ai juste eu à remplacer Canvas par JPanel.
    Un grand Merci.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un petit résolu alors (et pense bien à renommer paint en paintComponent, en swing il est référable de redéfinir paintComponent que paint (un bon paquet d'actions autres que le dessin du composant sont réalisé par paint, en redéfinissant paint tu risques de casser certains comportements de ton composant)

Discussions similaires

  1. [FAQ][VC++]Comment placer des images sur un menu contextuel
    Par Gabrielly dans le forum Contribuez
    Réponses: 0
    Dernier message: 14/04/2009, 18h48
  2. mettre image sur la barre de menu
    Par minooo dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 18/02/2008, 17h35
  3. [Système]Mettre une image sur un menu perso
    Par robocop2776 dans le forum Access
    Réponses: 10
    Dernier message: 12/04/2007, 19h04
  4. boutons avec images sur un menu
    Par ENDAMA NDONG dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2005, 11h30
  5. [TP]Help pour insertion d'un image sur tp7 svp !
    Par ilym dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/01/2004, 21h00

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