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

2D Java Discussion :

Utilisation d'un objet Graphics sur un autre


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Par défaut Utilisation d'un objet Graphics sur un autre
    Bonjour,
    Je suis un nouvel utilisateur du langage JAVA. Pour un projet d'un jeu de plateau ( le gymkhana) j'ai du créer une interface graphique dès la première semaine du projet. Je n'ai donc pas eu le temps de me renseigné sur les différentes façon de créer une interface. Je me suis tourné vers SWING.

    Le but de mon application est de pouvoir placer des jetons sur le plateau.
    Mon problème est que je n'arrive pas à afficher un composant Graphics ( mon jeton) par dessus le plateau après que le plateau ce soit affiché dans la fenêtre.

    Je voulais avant tout savoir si ma solution pouvais être mise en application et si il était possible de résoudre mon problème. J'ai déjà une piste quant à l'utilisation du GlassPane, mais je ne suis pas encore arrivé à le mettre en place.
    Je cherche plus une confirmation qu'une solution toute faite.

    Voici mon code:
    Ma fenêtre
    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
    public class testFenetreIg extends JFrame {
      public testFenetreIg(){
    	  super();
    	  build();
     
     
      }
      private void build(){
    	  setTitle("Gyhkhana");
    		setSize(800,600); 
    		setLocationRelativeTo(null);
    		setResizable(false); 
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    		setContentPane(buildContentPane());
      }
     
      private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		GridBagLayout g = new GridBagLayout();
     
    		panel.setLayout(g);
    		panel.setBackground(new Color(40,110,40));
     
    		 testPlateauIg plateau = new testPlateauIg();
    		GridBagConstraints gbc = new GridBagConstraints();
     
    		 panel.add(plateau,gbc);
     
     
    		return panel;
    	}
     
    }
    Le plateau
    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
    public class testPlateauIg extends JPanel {
     
    	public void paint(Graphics g){
     
    		build(g);
     
     
     
    	}
    	public Dimension getPreferredSize() {
    	      return new Dimension(500, 500);
    	   }
    	public void build(Graphics g){
    		g.setColor(Color.black);
    		g.fillRect(0, 0, 500, 500);
    		g.setColor(Color.white);
    		g.drawRect(20, 20, 460, 460);
    		g.setColor(Color.red);
    		for(int j = 0;j<5;j++)
    		{
    			for(int i = 0;i<6;i++)
    			{
     
    				g.fillRect(40+80*i, 80+80*j,20,20);
     
    			}
    		}
    		g.setColor(Color.white);
    		for(int j = 0;j<6;j++)
    		{
    			for(int i = 0;i<5;i++)
    			{
    				g.fillRect(80+80*i, 40+80*j,20,20);
    			}
    		}
    	}
     
     
    }
    merci et bonne journée.

    Cordialement,
    saltmm

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Par défaut
    Pour ton jeu, je te conseillerai de stocker tes boutons et leurs différentes coordonnés dans une liste. Au fur et à mesure que le jeu se déroule tu peux déplacer/créer/supprimer ces jetons et dans la boucle de ta fonction build(), les placer.

    Tu devrais créer une classe Jeton. En paramètre tu pourrais avoir leur coordonnées sur le plateau (x,y), leur couleur (class Color), etc...

    Je résume, Tu crées une "box" (list) de tes jetons. Durant les interactions du joueur, il modifie cette box (deplace le bouton, etc...) et dans ton JPanel tu affiches la box dans ta fonction paint();

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Par défaut
    Citation Envoyé par qdesmedt Voir le message
    Pour ton jeu, je te conseillerai de stocker tes boutons et leurs différentes coordonnés dans une liste. Au fur et à mesure que le jeu se déroule tu peux déplacer/créer/supprimer ces jetons et dans la boucle de ta fonction build(), les placer.

    Tu devrais créer une classe Jeton. En paramètre tu pourrais avoir leur coordonnées sur le plateau (x,y), leur couleur (class Color), etc...
    Je n'avais pas pensé a faire comme ça.
    J'ai créé une classe jeton qui me permet de dessiner mon jeton (un octogone) en passant en paramètre les coordonnées du point d'origine.
    De l'autre coté j'ai créé un tableau qui représente les cases jouables du plateau.
    Je transforme donc ensuite les indices du tableau en coordonnées à chaque tour.

    J'affiche ensuite mes jetons grâce au glassPane, mais je ne suis pas sur que cela soit optimal. Y a t'il un autre moyen?

Discussions similaires

  1. Paindre des objets Graphics sur un JPanel, comment procéder ?
    Par natus dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 26/12/2011, 14h17
  2. objets graphics sur un datagridview
    Par HULK dans le forum Windows Forms
    Réponses: 0
    Dernier message: 15/12/2008, 12h34
  3. Utiliser un projet visual editor sur une autre machine?
    Par guintolli dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 31/10/2008, 11h59
  4. Réponses: 1
    Dernier message: 28/03/2007, 12h01
  5. [VB6] faire référence à un objet situé sur un autre form
    Par coyott dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/05/2006, 15h13

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