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 :

update de mon dessin avec evenement


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut update de mon dessin avec evenement
    salut tout le monde de nouveau
    je suis en période de transition du C++ vers java et je remarque qu'ils sont très différents.
    En fait ce que je veux c'est contrôler les positions d' objets graphiques sur l'écran ...ou plus simple je veux changer la position d'un disque en appuyant sur un bouton .
    j'ai naturellement construit une classe disque
    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
    public class Disque {
     
    	//les attributs
     
    	int position=1;//la position sur le socle
    	int taille=100;
    	int N_socle;//1 2 ou 3
    	Boolean etat_actif;// le disque actif est celui qui bouge
     
     
    	//les methodes
    	void seDeplacer(){
     
    	switch(N_socle)
    	{
    	case 1: N_socle = 2;
    		break;
    	case 2: N_socle =3;
    	    break;
    	case 3: N_socle =1;
    	    break;
    	}
     
    	};
     
    	void seDessiner(Graphics g){
     
    		g.setColor(Color.red);
    		g.fillRect((N_socle-1)*220+80,285,100,30);
     
    	};
    	}
    et la j'ai un problème avec la methode seDessiner(Graphics g) quand je veux l'appeler je dois créer le Graphics g !! et meme si je le fais ca marche pas !
    d'après ce qu'on m'a dit le seule moyen de dessiner est de la faire dans une classe qui hérite de JPanel et après mettre ce que je veux dans une méthode paint(Graphics g) !....je trouve qu'on m'oblige de suivre une manière de programmer....et que j'aime pas en plus !!
    et Puis cette methode paint() c'est quoi ? pourquoi ce que je fais dedant s'execute sans que je l'appelle !! et si je veux faire un update de mon ecran je fais comment ...je peux meme pas l'appeller de nouveau


    je suis un peu perdu la ! help please

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Si tu veux dessiner quelque chose, il te faudra un support de dessin ; c'est un Graphics, comme tu l'as bien compris.

    Ce Graphics, il faut le créer, ou l'obtenir de quelque chose. Tu peux parfaitement le créer, si tu veux, avec tes propres méthodes.

    Si, toutefois, tu veux que cela aille sur l'écran, alors (merci java) il existe une procédure toute faite, à partir, comme tu l'as vu, de JPanel, et d'une façon générale à partir de la méthode getGraphics de java.awt.Component.

    Tu peux obtenir des Graphics à partir d'autres choses que des Component : à partir d'images, de travaux d'impression, ou même d'une autre Graphics.

    Peut être voudrais-tu travailler en plein écran ? Alors il faut que tu voyes la classe GraphicsDevice, ou que tu utilises une Frame sans décorations.

  3. #3
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut
    merci gifffftane pour la reponse.
    mais mon probleme principale c'est j'arrive pas un faire update de de mon ecran
    voila le code de ma classe qui fait les dessins:

    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
    public class JDessin extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -757539747465496331L;
     
     
    	public void paint(Graphics g) 
    	{
    		//On déssine les trois socles
    		DessinerSocle(g,1);
    		DessinerSocle(g,2);
    		DessinerSocle(g,3);
    		DessinerDisque(g,?);
    	}
     
     
    	private void DessinerSocle(Graphics g, int x)
    	{
    		//if (x>0 && x<4)
    		//{
    			g.setColor(Color.blue);
    			g.fillRect((x-1)*220+80,255,200,20);
    			//g.setColor(Color.blue);
    			g.fillRect((x-1)*220+174,5,12,250);
    			g.setColor(Color.white);
     
    		//}
    	}
    	private void DessinerDisque(Graphics g,int N_socle){
     
     
    	g.setColor(Color.red);
    	g.fillRect((N_socle-1)*240+130, 225, 100, 30);
    	g.setColor(Color.white);
     
     
    	}
    }
    comme vous pouvez le voir j'ai crée méthode DessinerDisque qui prend deux paramètres dont un est un attribut de la classe Disque : N_socle.(ce paramètre change a chaque fois que j'appuie sur un bouton)
    et c'est ça mon problème j'arrive pas a passer ce paramètre a la méthode paint(puisque je l'appelle jamais !) qui doit a son tour le passer a la méthode DessinerDisque !!
    j'espere que j'etais clair
    merci

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    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
    public class JDessin extends JPanel {
     
            private int N_socle;
     
            public void setN_socle(int N_socle) {
                   this.N_socle = N_socle;
            }
     
    	public void paint(Graphics g) 
    	{
    		//On déssine les trois socles
    		DessinerSocle(g,1);
    		DessinerSocle(g,2);
    		DessinerSocle(g,3);
    		DessinerDisque(g);
    	}
     
    	private void DessinerDisque(Graphics g){
    	       g.setColor(Color.red);
    	       g.fillRect((this.N_socle-1)*240+130, 225, 100, 30);
    	       g.setColor(Color.white);
    	}

  5. #5
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut
    Merci herve91 je vois le truc !
    mais si je veux passer des parametres a des classe abstraites telles que une sous classe de AbstractAction que j'ai fais pour la reception des evement sur un bouton .la voila
    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
    public class ActionClass extends AbstractAction{
     
    	private MaFenetre fenetre;
     
    	public void setFenetre(MaFenetre fenetre){
    		this.fenetre = fenetre;
    	}
    	 public ActionClass(MaFenetre fenetre,String texte){
    	     super(texte);
    	     this.fenetre = fenetre;
    	 }
    	 public void actionPerformed(ActionEvent e){
     
    		  this.fenetre.disque1.seDeplacer();
     
     
    	    }
     
    }

    je fais comment pour appeler la methode setFenetre ?

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MaFenetre fenetre = new MaFenetre(...);
    ActionClass actionClass = new ActionClass(fenetre, "...");
    ...
     
    MaFenetre fenetre = actionClass.getFenetre();
     
     
    public class ActionClass extends AbstractAction{
     
    	public MaFenetre getFenetre() {
               return fenetre;
    	}
    ]

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 12/12/2014, 15h04
  2. [Débutant] dessiner un retangle dans mon image avec un certain orientation.
    Par slaima15 dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/07/2011, 15h06
  3. Dessiner avec wxWidgets
    Par SuperPat dans le forum wxWidgets
    Réponses: 5
    Dernier message: 24/02/2009, 00h06
  4. Dessin avec Imager.. erreur dans mon script
    Par Chekov dans le forum Modules
    Réponses: 2
    Dernier message: 18/06/2006, 14h14
  5. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

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