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 :

[Image]Dessiner une ligne en dynamique


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    [Image]Dessiner une ligne en dynamique
    Ce message n'a pas pu être affiché car il comporte des erreurs.

  2. #2
    Membre confirmé
    Un problème de couleur de dessin, peut-être? C'est un grand classique...
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Membre à l'essai
    Un problème de couleur de dessin, peut-être? C'est un grand classique...
    non, ce n'est pas ça , je n'ai pas eu droit à ce grand classique.

  4. #4
    Membre actif
    public au lieu de protected, sinon tu redefini pas la methode de dessin alors c'est normal que ca dessine pas
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.drawLine(x0, y0, x, y); 
      }


    Voila
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  5. #5
    Membre à l'essai
    public au lieu de protected, sinon tu redefini pas la méthode de dessin alors c'est normal que ca dessine pas
    Oups j'avais pas vu , malheureusement cela ne marche toujours pas , mais tu as qd même corrigé une de mes erreurs !

    Je viens de m'apercevoir d'un truc bizarre si je lance mon prog et que je dessine une ligne je ne vois rien mais si je redimensionne la fenêtre je vois un petit carré apparaitre dans mon jpanel, a chaque nouvelle ligne un nouveau carré apparait si je redimensionne la fenêtre.

    J'ai l'impression que je dessine pas ou il faut...

  6. #6
    Membre actif
    Chez moi ca marche

    Test.java
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import javax.swing.*;
    import java.awt.*;
     
    public class Test{
     
      public static void main(String[] args){
        JFrame frame = new JFrame("toto");
        CLigne cligne = new CLigne();
        frame.getContentPane().add(cligne, BorderLayout.CENTER);
        frame.setVisible(true);
      }
    }


    CLigne.java
    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
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
     
    public class CLigne 
        extends JPanel 
        implements MouseMotionListener { 
     
      public CLigne() { 
        addMouseMotionListener(this); 
      } 
     
      public void mouseMoved(MouseEvent e) {} 
     
      private int x0 = 3000; 
      private int y0 = 3000; 
      private int x = 0; 
      private int y = 0; 
     
      public void mouseDragged(MouseEvent e) { 
     
            x = e.getX() ; 
            y = e.getY() ; 
     
            if (x0 == 3000 && y0==3000) 
            { 
              x0 = e.getX() ; 
              y0 = e.getY() ; 
            } 
                repaint(); 
      } 
     
      protected void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.drawLine(x0, y0, x, y); 
      } 
     
    }

    J'ai juste modifié le CCadrePrincipale.jPanel1.addMouseMotionListener(this); par addMouseMotionListener(this); pour que ca tourne chez moi.

    Je vois pas ce qui va pas dans ton code pour que ca marche pas chez toi :
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  7. #7
    Membre à l'essai
    Je suis daccord avec toi ton code marche mais chez moi ce n'est pas encore ça. Je m'explique j'ai fais l'appel à la fonction CLigne de la manière suivante :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void jButton2_actionPerformed(ActionEvent e) {
          CLigne Ligne = new CLigne();
          this.getContentPane().add(Ligne); 
        }


    (Cette fonction est appelée après appuie sur un bouton) Cela marche à moitié :
    Je clique sur ligne et je dessine une premiere ligne en aveugle , je ne vois rien.
    Si je redimensionne ma fenêtre et que je redessine une ligne c'est bon ça marche.

    En bref si je ne redimensionne pas l'ecran avant de commencer à dessiner rien ne se passe !

    L'une des différences de nos programmes est aussi que tu dessines directement dans une frame tandis que moi je dessine dans un jpanel, je ne sais pas si cela peut t'éclairé.

  8. #8
    Membre actif
    Citation Envoyé par Bugmaster
    L'une des différences de nos programmes est aussi que tu dessines directement dans une frame tandis que moi je dessine dans un jpanel, je ne sais pas si cela peut t'éclairé.
    Non je dessine dans un Panel (CLigne) qui est dans la Frame. Donc sur ce point les programmes sont pareil.


    A part ce petit point reglé, apparemment tu rajoute ton panel apres que ta frame soit créer, vu que c'est par appui sur un bouton. Donc apres ajout de ton nouveau panel faut que tu precise a ton appli que les composants ont changé, que tu as ajouté unn nouveau Panel, faut donc que tu fasse ca par exemple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void jButton2_actionPerformed(ActionEvent e) { 
          CLigne Ligne = new CLigne(); 
          this.getContentPane().add(Ligne); 
          validate();
        }

    En esperant que ca marche
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  9. #9
    Membre à l'essai
    Merci narfiggo !!

    Ca marche , j'ai un bug sur le dessin de la ligne avec les anciennes coordonnées qui doivent garder en mémoire mais je m'en charge.

    Merci pour ton aide je ne connaissais pas du tous cette commande validate.

    encore merci

###raw>template_hook.ano_emploi###