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

 Java Discussion :

[JFrame/ Panel] Problème de coordonnées


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 54
    Par défaut [JFrame/ Panel] Problème de coordonnées
    Bonjour,

    J'ai un programme avec un JFrame qui contient 3 JPanel.
    Le probleme est que lorsque je veux dessiner dans un des JPanel(qui se trouve dans une autre classe, le getX(), me donne bien la taille du JPanel, mais le drawLine(x,y,x2,y2) concerne le x du JFrame et non du JPanel ce qui fait que je m'en sors pas.
    Je ne parviens pas a récupérer la vrai taille du JFrame.

    Je vous mets le code, si vous trouvez quelques choses ( ou si ma méthode est absolument pas a faire....)

    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
     
     
     
    public class MaFenetre extends JFrame{
    	public static String title="mon titre";
    	public int fenetreWidth = 700;
    	public int fenetreHeight = 550;
     
    	public static Dimension size = new Dimension (700,550);
     
    	public PanneauBuild panneauBuild = new PanneauBuild();
    	public PanneauJeu panneauJeu = new PanneauJeu();
    	public PanneauScore panneauScore = new PanneauScore();
     
     
     
    	public MaFenetre() {
    		this.setTitle(title);
    		this.setSize(size);
    		this.setBackground(Color.white);
    		this.setResizable(true);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
    		//panneauBuild.setBounds(0, 0, (this.getWidth()/8), this.getHeight());
    		//panneauScore.setBounds(this.getWidth()/8,0,(this.getWidth()-this.getWidth()/8),this.getHeight()/8);
    		//panneauJeu.setBounds(this.getWidth()/8, this.getHeight()/8, (this.getWidth()-this.getWidth()/8), (this.getHeight()-this.getHeight()/8));
     
     
     
     
    		init();
     
    	}
    	public void init() {
    		while(true) {
    		//placement des différents panneau + rafraichissement
    		if ((this.getWidth() != fenetreWidth) || (this.getHeight() != fenetreHeight)) { //pour changement grandeur fenetre 
    			fenetreWidth = this.getWidth();
    			fenetreHeight = this.getHeight();
    			panneauBuild.setBounds(0, 0, (this.getWidth()/8), this.getHeight());
    			panneauScore.setBounds(this.getWidth()/8,0,(this.getWidth()-this.getWidth()/8),this.getHeight()/8);
    			panneauJeu.setBounds(this.getWidth()/8, this.getHeight()/8, (this.getWidth()-this.getWidth()/8), (this.getHeight()-this.getHeight()/8));
    			System.out.println("fenetre " + this.getWidth());
     
    			this.getContentPane().add(panneauBuild);
    			this.getContentPane().add(panneauScore);
    			this.getContentPane().add(panneauJeu);}
     
     
    			//panneauJeu.repaint();
    			this.setVisible(true);
     
    		panneauJeu.repaint();
    		try {
    			Thread.sleep(10);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
     
     
    		//screen.setBackground(Color.blue);
    		//this.add(screen);
     
    		}
     
    	}	
     
     
     
     
    	public static void main(String args[]) {
    		MaFenetre frame = new MaFenetre();
     
    	}
     
    }
    Et un des JPanel appellé sur lequel jessaye de dessiner

    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
     
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
     
    import javax.swing.*;
     
     
    public class PanneauJeu extends JPanel {
     
    	public int mycpt=0;
    	public Block[][] block;
    	public int jeuWidth;
    	public int jeuHeight;
    	public int widthAffichable;
    	public int heightAffichable;
    	public int margin = 50;
     
     
     
    	//A changer taille du plateau jeu
    	Screen screen = new Screen();
     
     
    	public PanneauJeu() {
    		block = new Block[screen.tailleMonde][screen.tailleMonde];
    		setBackground(Color.green);
     
    	}
     
     
    	public void paintComponent(Graphics g) {
    		//ecrase par un dessin
    		g.setColor(Color.white);
    		g.drawRect(0, 0, getWidth(), getHeight());
     
     
    		jeuWidth = this.getWidth();
    		jeuHeight = this.getHeight();
     
    		widthAffichable = (int)Math.floor((jeuWidth-margin)/32);
    		heightAffichable = (int)Math.floor((jeuHeight-margin)/32);
    		g.setColor(Color.blue);
     
    		//dessin de grille
    		for (int i=0;i<=widthAffichable;i++) {
    			g.drawLine(jeuWidth - (widthAffichable*32), margin+(i*32), (widthAffichable*32) - margin, margin + (i*32));
    		}
    		for (int i=0;i<=heightAffichable;i++) {
    			g.drawLine(margin+(i*32), margin, margin + (i*32), (heightAffichable*32) -margin);
    		}
     
    	}
    }
    Merci de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 23
    Par défaut
    Bonsoir,

    J'ai essai d'exécuter votre code mais il manque quelque classe
    Classe Block
    Classe PanneauBuild
    classe PanneauScore
    Classe Screen

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    tu peux nous mettre toutes des dépendances au mettre ton projet en .rar

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Par défaut
    Bonjour,

    Je n'ai pas examiné le problème en détails mais je vois quelque chose qui cloche: tu appelles getWidth() avant d'appeler setVisible() sur la fenêtre. De mémoire, getWdth() et getHeight() sont indéfinies tant que le composant n'est pas visible (je crois qu'ils rencoient 0). Peut être que c'est ça...?

Discussions similaires

  1. problème de coordonnées ou autre problème ?
    Par superC dans le forum DirectX
    Réponses: 8
    Dernier message: 19/02/2007, 21h20
  2. Problème de coordonnées dans des balises
    Par Zebulon777 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/02/2007, 07h26
  3. Réponses: 3
    Dernier message: 24/11/2005, 09h44
  4. Réponses: 2
    Dernier message: 16/10/2005, 19h19
  5. problème de coordonnées
    Par Yennick dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 11/03/2005, 17h32

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