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 :

JButton sur une image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut JButton sur une image
    Bonjour,

    Pour un jeu, j'ai placé une image de fond dans un JFrame.
    Dans ce JFrame, j'ai dans la partie gauche le damier de mon jeu et à droite mes JButton.

    Le damier se superpose bien au dessus de l'image, mais mes JButton se positionnent à la droite de l'image.

    Voici 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
    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
    class JeuGraphique extends JeuConsole {
    	Dessin MonDessin ;
    	JFrame fenetre;
    	JPanel panel;
    	JButton jouer;
    	JButton quitter;
     
    	Image img;
     
    	int tailleCase=50;
     
    	JeuGraphique(){
    		MonDessin = new Dessin(Color.BLACK);
    		fenetre = new JFrame("Reversi");
    		jouer = new JButton("jouer");
    		quitter = new JButton("quitter");
    		panel = new JPanel();
    		panel.add(jouer);
    		panel.add(quitter);
    		fenetre.add(panel,BorderLayout.EAST);
    		fenetre.add(MonDessin);
    		//pack + set visible
    		fenetre.pack();fenetre.setVisible(true);
    	}
     
    	class Dessin extends JPanel {
    		int tailleCase=50;
    		protected Color couleur;
     
    		public Dessin(Color c)
    		{
    			super();
    			couleur = c;
    			setPreferredSize( new Dimension(((8*tailleCase)+133),8*tailleCase));
    			img = getToolkit().getImage("nfs2b.jpg");
    			try
    			{
    				MediaTracker tracker = new MediaTracker (this);
    				tracker.addImage(img,0);
    				tracker.waitForID(0);
    			}
    			catch (Exception e) {}
    		}
     
    		public void paintComponent( Graphics g) {//tjrs ds une sous classe
    			super.paintComponent(g);
    			g.setColor(Color.GREEN);
    			g.drawImage (img,0,0,this);
    			// g.fillRect(0,0,8*tailleCase,8*tailleCase);
     
    			for (int j = 0;j < 8; j++)
    			{
    				for (int i = 0; i < 8; i++)
    				{
    					g.setColor(Color.BLACK);
    					g.drawRect (tailleCase*i,tailleCase*j,tailleCase,tailleCase);
    					if (damier[i][j]!=VIDE)
    					{
    						if (damier[i][j]==BLANC)
    						{
    							g.setColor(Color.WHITE);
    							g.fillOval(tailleCase*j,tailleCase*i,tailleCase,tailleCase);
    						}
    						if (damier[i][j]==NOIR)
    						{
    							g.setColor(Color.BLACK);
    							g.fillOval(tailleCase*j,tailleCase*i,tailleCase,tailleCase);
    						}
    					}
    				}
    			}
    		}
    	}
     
    	public String toString() {
    		MonDessin.repaint();
    		return super.toString();
    	}
    }
    Quelqu'un aurait il une idée svp?

    D'avance merci.
    Sébastien

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    C'est une histoire de layout !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fenetre.add(panel,BorderLayout.EAST);
    fenetre.add(MonDessin); // Implicitement placé en BorderLayout.CENTER
    panel et MonDessin sont 2 panels distincts, normal qu'ils ne se supperposent pas

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    S'il dit que c'est ca fenetre qui a un fond, je pense que c'est le fond du panneau de bouton qui cacher l'image.

    Il faut que le panneau contenant les boutons soit transparant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    panel.setOpaque(false);

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    Ok merci à vous.

    J'ai supprimé le JPanel et fait un ad avec MonDessin uniquement.
    Mes boutons se sont bien superpositionnés au dessus de l'image, mais au dessus du damier! En fait, c'est comme si ils étaient au "NORTH"! et je n'arrive pas à les déplacer sur la droite (en dehors du damier)

    Voici mon nouveau 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
    	JeuGraphique(){
    		MonDessin = new Dessin(Color.BLACK);
    		fenetre = new JFrame("Reversi");
    		jouer = new JButton("jouer");
    		quitter = new JButton("quitter");
    		//panel = new JPanel();
    		//panel.add(jouer);
    		MonDessin.add(jouer);
    		//panel.add(quitter);
    		MonDessin.add(quitter);
    		//fenetre.add(panel,BorderLayout.EAST);
    		fenetre.add(MonDessin);
    		//pack + set visible
    		fenetre.pack();fenetre.setVisible(true);
    	}
    Sébastien

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    J'ai résolu mon problème :

    J'ai découpé mon jpg de façon à pouvoir mettre ma partie de gauche dans mon JFrame et celle de droite dans dans le JPanel.

    Merci pour votre aide.

    Sébastien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  2. aide sur une image
    Par laetus dans le forum IHM
    Réponses: 5
    Dernier message: 04/10/2004, 14h54
  3. [Servlet] [Image] Dessiner sur une image
    Par gaia_dev dans le forum 2D
    Réponses: 5
    Dernier message: 01/09/2004, 17h11
  4. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 17h05
  5. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

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