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

Interfaces Graphiques en Java Discussion :

ameliorer un peu mon code


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Par défaut ameliorer un peu mon code
    Bonjour tout le monde :
    voila j ai un code simple qui dessine un carre dans un JPanel avec paintCompnent
    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
    import javax.swing.*;
    import java.awt.*;
     
     
    public class Maiin {
    	public static void main(String[]args){
     
    		JFrame	f =	 new JFrame();
     		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     		f.setSize(500, 500);
     		f.setVisible(true);
     		f.setContentPane( new Pannau());
     
    	}
    }
    //class de Panel
    class Pannau extends JPanel{
     
    	int x=100,y=100;
     
    	public Pannau(){
    		setBackground(Color.white);
    		}
    //****partie de code a remplacer par une methode 
    //****Dessiner(int x,int y)qui dessine le carrer
    	protected void paintComponent(Graphics g){
    		super.paintComponent(g);
    		g.fillRect(x,y,30,30);
     
    	}
    }
    et je voudrai remplacer le bout de code de dessin par une méthode Dessiner() définis dans une autre class qui prend 2 paramètre int est dessine le carre .
    ca a l'air simple comme ca mais je n y arrive pas , un petit coup de pousse serais pas de trop
    merci a vous

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    On ne peut pas dessiner dans un JPanel
    sans passer par paintComponent(Graphics g)
    ... donc pas de méthode Dessiner() qui gribouille directement

    En revanche, paintComponent peut accéder à des variables ou des objets
    à l'extérieur. Du coup ça donne :

    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
    //class de Panel
    class Pannau extends JPanel{
     
            int x=-1,
            int y=-1;
     
    	public Pannau(){
    		setBackground(Color.white);
    		}
     
    	protected void paintComponent(Graphics g){
    		super.paintComponent(g);
                    if (x>-1) {   // ne se déclenche que si x a été renseigné par la méthode Dessiner
    		    g.fillRect(x,y,30,30);
                    }
     
    	}
     
    public void Dessiner(int gauche, int haut) {
       // on renseigne x,y avec les coordonnées
       x=gauche;
       y=haut;
       // on déclenche la peinture !!! :D
       repaint();   // appel de paintComponent()
    }
     
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Par défaut
    tout d abord merci pour votre repose.
    mais dans ce cas comment je fait pour dessiner plusieurs carres à des endroit diffèrent de mon JPanel car c mon vrai problème, si je change les paramètres il dessine pas un nouveau carre mais redessine le premier dans un nouvel endroit.
    je m 'explique : j ai une fenêtre avec des boutons , chaque buttons correspond a une figure , j arrive a dessiner chaque figure et les faire déplacer ..ect mais je peux pas dessiner la même figure deux fois ou plus
    si vous avez un solution

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Je me doutais bien de la question suivante ...

    paintComponent ne déplace pas le carré. Il efface tout et il recommence !
    Comme paintComponent redessine tout le panneau,
    il faut mémoriser dans un ArrayList les dessins à faire
    et les faire dessiner par paintComponent en fonction de la forme trouvée.

    Vous pouvez vous faire une petite classe "Dessin"
    comprenant 3 informations :
    - la forme
    - la position x
    - la position y

    Chaque fois que vous cliquez sur le bouton "Rectangle",
    vous créez un nouvel objet Dessin avec par exemple
    forme = "Rectangle", x=100, y=50

    ce Dessin est ajouté à ArrayList.

    Faire pareil pour les autres formes...

    Dans la méthode paintComponent , reprendre tous les objets Dessins se trouvant dans votre ArrayList (avec une itération).

    Pour chaque objets se trouvant dans l'ArrayList, faire :
    si forme = "Rectangle" alors g.fillRect(x,y,30,30);
    si forme = "Ovale" alors ....
    etc.


    Ce système a l'avantage qu'en perfectionnant l'objet Dessin (couleurs, épaisseur de trait ...)
    vous finirez par faire votre application WinDraw dont vous rêvez ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Par défaut
    merci nepomucen , je vais essayer de coder tout ça ..
    (ca va me prendre tout la nuit , hahaha.....)

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Par défaut
    encore une petite question , c j ai le bout de code suivant
    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
     
    class dessin {
    int x ;
    string figure ;
    }
    //***********
    ArrayList al = new ArrayList();
    int i ;
    	for(i=0;i<5;i++)
    	{
    	dessin p =	new dessin();
    	p.pox=i;
    	p.forme=(" ");
    	al.add(p);
    	}
    je c q il faut utiliser al.get(i) pour avoir mes objets mais comment acceder au variable pox et forme .
    je bloque la

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

Discussions similaires

  1. Popup menu : ameliorations de mon code
    Par drxel dans le forum Débuter
    Réponses: 6
    Dernier message: 04/09/2012, 09h55
  2. Ameliorer mon code
    Par GTSLASH dans le forum C#
    Réponses: 0
    Dernier message: 28/12/2011, 09h54
  3. réussite un peu aléatoire de mon code :S
    Par Kuchiki Byakuya dans le forum Débuter
    Réponses: 19
    Dernier message: 07/01/2010, 19h24
  4. un peu lourd mon code aidez moi
    Par UDSP50 dans le forum IHM
    Réponses: 2
    Dernier message: 15/04/2008, 22h09
  5. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

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