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 :

Réduire l'application sans que les dessins disparaissent


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut Réduire l'application sans que les dessins disparaissent
    Salut a tous ,
    Donc voila mon problème je suis en train de dessiner dans un JPanel mais quand je réduit l'application tous les dessins sont parties.
    j'ai cherché partout mais pas de solution!
    voici mon code :

    PaintComponent(g) :

    Code java : 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
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    public class GraphicWorld extends JPanel
        {
     
         @Override
       public void paintComponent (Graphics g)
          {
     
     
     
           super.paintComponent(g);
           Graphics2D gfx = (Graphics2D)g;
     
           System.out.println(valuesId[0]);    
          if (!"0".equals(valuesId[0]))
          {
     
           if(valuesId[0].contains("Port number"))
            {
     
             gfx.drawString("(Port)", 30, 20);
             gfx.drawString(valuesId[1],30, 140);
            }
           if(valuesId[0].contains("Port Extension"))
            {
                gfx.drawString("(EXT)", 100, 20);
                gfx.drawString("("+valuesId[1]+" )", 100, 140);
              //  draw(g);
            }
           if(valuesId[0].contains("Forward Extension"))
            {
     
              //  draw(g);
            }
           if(valuesId[0].contains("Port Activity"))
            {
              if(valuesId[1].contains("ON-HOOK"))
              {
     
               gfx.drawImage(imgOnhook,87, 70, null);
               gfx.dispose();
              }
              if(valuesId[1].contains("OFF-HOOK"))
              {
               gfx.drawImage(imgOffhook, 87, 70, null);
               }
            }
           if (valuesId[0].contains("Forward Staus"))
           {
               System.out.println("paaassss ");
               gfx.drawString("(FW)", 236, 20);
           }
           if(valuesId[0].contains("Forward Extension"))
            {
     
                    gfx.drawLine(135,87,235,87);
                    gfx.drawLine(230, 91, 235, 87);
                    gfx.drawLine(230,83,235,87);
     
                    gfx.drawOval(135,84,6,6);
                    gfx.setColor(Color.BLACK);
                    gfx.fillOval(135, 84, 6, 6);
     
                if(valuesId[1].contains("NONE"))
                {
                   gfx.drawString("(NF)", 236 , 87);
     
                }
                else
                {
     
                   gfx.drawImage(imgOnhook,236,70, null);
     
     
                }
            }
           if(valuesId[0].contains("Dialing"))
            {
                gfx.drawString("("+ valuesId[1]+" )", 100, 180);
                //draw(g);
            }
     
     
          }
        }
     
    }


    DocumentListener() :
    Code java : 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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    protected class MyDocumentListener implements javax.swing.event.DocumentListener {
     
     
     
            @Override
       public void changedUpdate(javax.swing.event.DocumentEvent e) {
                // text has been altered in the textarea
     
                }
            @Override
       public void insertUpdate(javax.swing.event.DocumentEvent e) 
            {
                    // text has been added to the textarea 
     
                try { 
                   //if not prompt Line
                    if (!Traffic.getText(Traffic.getLineStartOffset(Traffic.getLineCount()-1),
                      Traffic.getLineEndOffset(Traffic.getLineCount()-1)-Traffic.getLineStartOffset(Traffic.getLineCount()-1)).contains(">>"))
                         {//if a line after a replace has been inserted
     
                         if (Traffic.getLineCount()  == (lastreplace + 2) ) 
                  {
                           System.err.println(Traffic.getText(Traffic.getLineStartOffset(lastreplace),
                                                                 Traffic.getLineEndOffset(lastreplace) - 
                                                                    Traffic.getLineStartOffset(lastreplace)));
                     //  PortArchitecture (Traffic.getText(Traffic.getLineStartOffset(lastreplace),
                          //          Traffic.getLineEndOffset(lastreplace) - 
                           //                 Traffic.getLineStartOffset(lastreplace)));
     
     
                      String line = Traffic.getText(Traffic.getLineStartOffset(lastreplace),Traffic.getLineEndOffset(lastreplace) -  Traffic.getLineStartOffset(lastreplace));
     
                       //repaint only with a valid line
                       if (line.indexOf(":") != (-1)) 
                       {
                          valuesId[0] = line.substring(0,line.indexOf(":"));
                          valuesId[1] = line.substring(line.indexOf(":")+1);
     
                          i+=1;
                          System.out.println(" i =  " + i + " :  "+ valuesId[0]);
     
                          if (i==2)
                          {
     
                              graphicPanel.repaint(30,10,100,180);//Port Number
     
                          }
                          if(i==4)
                          {
                              graphicPanel.repaint(90,10,80,180);//Port Extension 
                          }
     
                          if (i==5)
                          {
                              graphicPanel.repaint(87,70,50,35);//Port Activity
                          }
                          if (i==6)
                          {
                              graphicPanel.repaint(236,10,25,20);//(FW)
                          }
                          if (i==7)
                          {
                              graphicPanel.repaint(135,75,130,24);//FW EXT
     
                          }
     
                       } 
                       lastreplace +=1;
                  }
     
                    else//last line when it's not detected by the previous condition it'll be consumed here
                  {
                                //                     LAST       LINE
                  }
              }
                Traffic.setCaretPosition(Traffic.getDocument().getLength());
     
     
                } catch (BadLocationException ex) {
                    Logger.getLogger(TrafficSerialPort.class.getName()).log(Level.SEVERE, null, ex);
                }
     
            }
     
            @Override
       public void removeUpdate(javax.swing.event.DocumentEvent e) {
          // text has been removed from the textarea
     
          }
     
        }

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut
    eh bien je vais vous dire ce que je reçois:
    Chaque fois qu'une ligne est insérée dans un JTextArea je fais les tests et le dessin apparaît dans le JPanel comme cette ligne:


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    graphicPanel.repaint (30,10,100,180);/ / Numéro de port
    ici je reçois de cette ligne:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (valuesId [0]. contains ("Numéro de port"))
     {
     
                gfx.drawString ("(Port)", 30, 20);
                gfx.drawString (valuesId [1], 30, 140);
     }
    2 chaînes dans le JPanel: (Port) et (44) ==> si le numéro de port est de 44 mais quand je minimiser l'application tous les dessins ont disparu. Comme u vois, je suis remplaçant paintComponent (g), et quand je suis repeindre dans le Document Listener je repeindre seulement les rectangles que j'ai besoin de repeindre si les autres peintures ne seront pas disparu.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Les composants graphiques n'ont pas de mémoire. Ils sont supposés se redessiner entièrement à chaque passage dans la méthode paint.

    Donc si tu dessines des choses complexes, soit tu gardes une copie dans un BufferedImage que tu dessines ensuite à l'écran, soit tu mémorises quelque part tout ce qu'on t'as demandé de redessiner histoire de pouvoir recommencer.

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/07/2012, 08h18
  2. Cadre fixe sans que les bords augmentent
    Par circusweb dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 16/08/2011, 13h18
  3. Réponses: 2
    Dernier message: 04/06/2010, 15h04
  4. Réponses: 2
    Dernier message: 21/02/2007, 12h54
  5. Réponses: 5
    Dernier message: 14/01/2007, 18h12

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