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 :

recuperer un JPanel et ses dessins


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut recuperer un JPanel et ses dessins
    bonjour,

    J'ai besoin d'une methode qui recupere tous les dessins d'un JPanel et qui l'associe a un JPanel. Autrement dit, jaimerais definir un JPanel qui récupere tous les dessins que j'ai fait sur un autre JPanel.

    Une telle methode existe t'elle ?

    Si vous n'avez pas compris voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(e.getSource() == AffEnt){
     
                    try {
     
                        CollectionEntite C = new CollectionEntite(this,FS2);
                    } catch (SQLException ex) {
                        ex.printStackTrace();
                    }
     
            }
    FS2 étant mon JPanel et this un objet de type "agl"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      JPanel Draw;    
       Agl a;
        /** Creates a new instance of CollectionEntite */
        public CollectionEntite(Agl a,JPanel p) throws SQLException {
          //construction de la fenetre
                this.a=a;
                Draw=p;
            .........................
    j'associe mes parametres ..

    et lorsque je clique sur ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(e.getSource() == ok)
            {
               String nom=c.getSelectedItem();
               int i= findIndexEnt(nom);      
               Entite E=List[i];
               System.out.println(E);
               E.setDraw(Draw);
               E.setAgl(a);
               E.paint();
     
               this.dispose();
            }
    List étant un tableau d'entité

    Dans entite.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        void setAgl(Agl a) {
            this.a=a;
        }
    et je dessine :
    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
     
        public void paint(){        
     
                     Graphics g=null;	
                    g=Draw.getGraphics();
     
     
                    g.setColor(Color.WHITE);
                    g.fillRect(positionX+1,positionY+1,largeur-1,hauteur-1);
                    g.setColor(Color.BLACK);
                    g.drawRect(positionX,positionY,largeur,hauteur);
     
          // BLA BLA BLA BLA BLA BLA 
     
                   a.setPanel(Draw.getGraphics());
        }
    le composant se dessine bien mais s'efface lorsque je reduit la fenetre ou la redimmessione donc j'ai fait appel a setPanel qui je pensait devait recuperé tous les dessin et les appliquer ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        void setPanel(Graphics graphics) {
            FS2.update(graphics);
        }

    mais le hic c'est que ca ne marche pas : pourtant j'ai bien redefinie la methode paint de mon JPanel en le passant en parametre
    comment je fais pour que quand je redessinne la surface de FS2 il ne perde pas les modifications ?

    merci

  2. #2
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    persone ne sait ?

    est ce ke je peux definir mon dessin comme composant dun JPanel et donc l'ajouter comme je veux ?

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Je dois avouer que je n'ai aps trouvé ta question très claire...

    Quand tu parles de dessin, il s'agit de composants ou vraiments de dessins fait dans le paint de ton JPanel avec des instructions du genre graphics.drawLine(...) ?

  4. #4
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut
    et je dessine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      public void paint(){ 
      Graphics g=null; 
      g=Draw.getGraphics(); 
      g.setColor(Color.WHITE); 
      g.fillRect(positionX+1,positionY+1,largeur-1,hauteur-1); 
      g.setColor(Color.BLACK); 
      g.drawRect(positionX,positionY,largeur,hauteur); // BLA BLA BLA BLA BLA BLA 
      a.setPanel(Draw.getGraphics()); }
    Je dessine avec g.drawBidule() ....
    et le probleme c'est que le dessin s'efface quand je redimmenssionne la fenetre ou la reduit totalement
    normal puisque qu'il fait appel a une methode actualiserMCD() qui construit un FS2 ( mon JPanel ) vierge de tout dessin ... Comment conserver mon dessin ???

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Non, ça ne répond pas entièrement à ma question.

    Le problème c'est que l'on ne voit pas où se situe les bouts de code que tu nous a donné.
    Ma question, c'est : les dessins sont directement fais dans le JPanel ou alors ils sont fait dans des composants que tu as ajouté au JPanel?

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Essaie d'épurer le code pour isoler le plus possible le problème.
    Ainsi, y'aura moins de trucs en vrac, et ça nous sera plus facile à lire.

    Avec un peu de chance, c'est même possible que tu trouves le pb toi-même en faisant le ménage.

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par keub51
    bonjour,

    J'ai besoin d'une methode qui recupere tous les dessins d'un JPanel et qui l'associe a un JPanel. Autrement dit, jaimerais definir un JPanel qui récupere tous les dessins que j'ai fait sur un autre JPanel.
    Trois methodes :
    - inclure le panel source (ou une copie/clone) dans le panel destination. Il suffit juste d'utiliser les methodes Swing de contruction de GUI habituelles.
    Sans copie evidement ca retire la source de l'endoit ou il se trouvait. Avec copie, evidement la copie ne contiendra pas les modification ulterieures a moins de mettre en place un systeme de partage des variables (ca depend comment tu clones, par defaut il n'y a a pas de clonage en profondeur ce qui nous arrange) ou en utilisant des mecanismes du genre observateur/listener pour notifier des mises-a-jour.

    - creer une BufferedImage a la taille du panel source et rendre le panel source dedans. Afficher cette image dans le panel destination, au besoin utiliser des transformations pour l'aggrandir/retrecir pour que le tout s'affiche correctement dans le panel destination.

    - appeler la methode de rendu du panel source depuis celle du panel destination. Si le panel source n'est pas deja affiche a l'ecran, il faudra lui donner une taille avant d'appeler la methode de rendu. Au besoin effecter des transformations affines pour que le tout s'affiche correctement dans le panel destination.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. JPanel et ses évènements
    Par bastien dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 28/04/2010, 11h02
  2. Dessiner dans différents JPanels
    Par N@sH dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/05/2005, 15h39
  3. [Dessin JPanel] Generer dessin pas a pas
    Par -=Spoon=- dans le forum 2D
    Réponses: 2
    Dernier message: 03/12/2004, 22h41
  4. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 12h13
  5. dessiner le contour d'un jpanel
    Par iamspacy dans le forum Composants
    Réponses: 4
    Dernier message: 11/05/2004, 15h11

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