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 :

Dessinez avec différentes sortes de pinceaux


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut Dessinez avec différentes sortes de pinceaux
    Bonjour,
    j'essaye de créer un bouton pinceau c'est a dire quand je click sur ce bouton il me donne le droit de dessinez des rectangles ou ellipses.

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    salut.
    tu peux voir avec la classe TexturePaint.

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    moi je veut dessiner avec le curseur de la souris,est ce que TexturePaint permet de faire ca ??

  4. #4
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par ahmedige Voir le message
    moi je veut dessiner avec le curseur de la souris,est ce que TexturePaint permet de faire ca ??
    oui tu peux le faire si tu applique la texture au contexte graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics2D_g.setPaint(texture);

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Merci de bien vouloir chercher dans les cours et tutoriels mis à disposition gracieusement par developpez.com

    http://duj.developpez.com/tutoriels/java/dessin/intro/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Graphics2D g2 = (Graphics2D)img.getGraphics();
    BufferedImage bi = new BufferedImage(5, 5,BufferedImage.TYPE_INT_RGB);
        Graphics2D big = bi.createGraphics();
        big.setColor(Color.blue);
        big.fillRect(0, 0, 5, 5);
        big.setColor(Color.lightGray);
        big.fillOval(0, 0, 5, 5);
        Rectangle r = new Rectangle(0, 0, 5, 5);
        g2.setPaint(new TexturePaint(bi, r)); 
        Rectangle rect = new Rectangle(5,5,200,200);
        g2.fill(rect);
    voila par exemple le code que je doit utiliser mais moi a la place de définir la dimension du rectangle par code je doit mettre un Listner qui écoute le mouvement de la souris si je click ou pas,j'ai bien suivi le tuto de site développement mais j'arrive pas a trouve la solution

  7. #7
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    public void mousePressed(MouseEvent e) 
             {
              x_rectangle = e.getX();
              y_rectangle= e.gety();
              repaint(); 
           }
    et dans la méthode paintComponent()

    tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    g2.setPaint(new TexturePaint(bi, r)); 
      Rectangle rect = new Rectangle(x_renctangle,y_rectangle,200,200);
       g2.fill(rect);

  8. #8
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Tu peut m'explique le dernier code ,surtout la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.setPaint(new TexturePaint(bi, r));
    ,j'ai pas bien comprit sont role ,et pourquoi le mettre dans la méthode paintcompenant() je peut seulement le mettre au corps du bouton non ?

  9. #9
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par ahmedige Voir le message
    Tu peut m'explique le dernier code ,surtout la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g2.setPaint(new TexturePaint(bi, r));
    ,j'ai pas bien comprit sont role
    La méthode setPaint() permet de choisir un type remplissage parmi plusieurs (implémentants l'interface Paint):
    Couleurs unies ,ou un Dégradés ou une Textures(ton cas).

    Citation Envoyé par ahmedige Voir le message
    ,et pourquoi le mettre dans la méthode paintcompenant() je peut seulement le mettre au corps du bouton non ?
    tu peux faire le dessin dans ton bouton en utilisant la méthode
    getGraphics() pour récupérer un objet g de type Graphics2d et faire par la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.setPaint(new TexturePaint(bi, r))
    mais l'utilisation de getGraphics() engendre bcp de problèmes... donc mieux vaut faire le dessin dans la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paintComponent(Graphics g)

  10. #10
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Donc d'apres toi la methode paintComponent() doit etre comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Rectangle rect = new Rectangle(x_rectangle,y_rectangle,200,200);
        g.fill(rect);
    et le code du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Graphics2D g2 = (Graphics2D)img.getGraphics();
            paintComponent(g2)
    ;

  11. #11
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par ahmedige Voir le message
    et le code du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Graphics2D g2 = (Graphics2D)img.getGraphics();
            paintComponent(g2)
    ;
    j'ai pas dis ca .
    ton bouton dois faire un appel à la méthode paintComponent qui va se préoccuper du dessin( + déterminer la position du clique ou sera dessiner ton rectangle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void mousePressed(MouseEvent e) 
             {
              // abscisse et ordonnée du pixel ou on a cliqué
              x_rectangle = e.getX();
              y_rectangle= e.gety();
    
              // appel à la méthode paintComponent() pour faire le dessin
              repaint(); 
           }

  12. #12
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Bonjour,
    pardon mais j'arrive pas a te suivre ,Le nom de la méthode de mon bouton est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {  }
    Le code de paintComponent() est claire (même c il me souligne sur la méthode fill (cannot find symbol:methode fill(java.awt.rectangle))) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public void paintComponent(Graphics g) {
     
        Rectangle rect = new Rectangle(x_rectangle,y_rectangle,200,200);
        g.fill(rect);
     
      }
    enfin j'arrive a la méthode mousePressed(),comment j'utiliserai cette méthode et ce que je doit l'appelé dans la méthode de mon bouton c a d quand je click sur le bouton JButton2 il m'envoie a la méthode mousePressed () ?

  13. #13
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par ahmedige Voir le message
    Bonjour,
    pardon mais j'arrive pas a te suivre ,Le nom de la méthode de mon bouton est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {  }
    Le code de paintComponent() est claire (même c il me souligne sur la méthode fill (cannot find symbol:methode fill(java.awt.rectangle))) :
    faut ecrire
    Citation Envoyé par ahmedige Voir le message
    enfin j'arrive a la méthode mousePressed(),comment j'utiliserai cette méthode et ce que je doit l'appelé dans la méthode de mon bouton c a d quand je click sur le bouton JButton2 il m'envoie a la méthode mousePressed () ?
    ta classe doit implémenter l'interface MouseListener, ensuite tu écrit la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void mousePressed(MouseEvent e) 
           {
             // code à exécuter lors de l'appui sur le bouton de la souris.
           }
    documentations : classe graphics2D
    Gestion de de la souris

  14. #14
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    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
        private int x;
        private int y;
        private int x1;
        private int y1;
    public void paintComponent(Graphics g) {
        g.drawLine(x,y,x1,y1);
       }
      public void mouseReleased(MouseEvent e) {
           x1 = e.getX();
           y1= e.getY();
              repaint();
        }
    public void mousePressed(MouseEvent e) {
            x = e.getX();
            y= e.getY();
              repaint();
        }
    j'ai tout fait mais toujours j'arrive pas a dessinez une ligne par exemple ,peut être que c'est le problème de l'affichage surtout que moi j'essaye de le tracer dans une jpanel.

  15. #15
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    salut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void mousePressed(MouseEvent e) {
           x = e.getX();
           y= e.getY();  
           repaint();
    
       }
    le repaint() ici peut être supprimé. tu fais le dessin que quand tu as spécifié les deux points( aprés le relachement du bouton de la souris).
    je suis sùr que tu as oublié de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addMouseListener(this)    ;
    dans le constructeur de ton JPanel .

    un exemple vite fait :
    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
    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
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class MainClass extends JPanel implements MouseListener{
     
        private int x;
        private int y;
        private int x1;
        private int y1;
     
        public MainClass()
        { 
            super();
            addMouseListener(this)    ;
        }
     
        protected void paintComponent(Graphics g) 
           {
            super.paintComponent(g);
            g.drawLine(x,y,x1,y1);
           }
     
     
      public void mouseReleased(MouseEvent e) {
          x1 = e.getX();
          y1= e.getY();
             repaint();
       }
    public void mousePressed(MouseEvent e) {
           x = e.getX();
           y= e.getY();  
       }
     
      public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.getContentPane().add(new MainClass());
     
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500,200);
        frame.setVisible(true);
      }
     
    @Override
    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub
     
    }
     
    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub
     
    }
    }

  16. #16
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup Mohamed tu ma bien aidé .
    J'ai une petite question pourquoi quelque fois le netbeans me souligne sur des lignes de code comme cette image en piecejoint.
    Images attachées Images attachées  

  17. #17
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    salut.
    il s'agit de méthodes supprimées ou susceptibles d'être supprimées dans les versions futurs/actuelles et il y a tjrs une méthode à utiliser à la place.
    il existent encore pour assurer la compatibilité avec les versions précédentes et tu feras mieux de les éviter.

  18. #18
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Et comment je peut connaitre les méthodes à utiliser à la place,y'a t'elle FAQ ou tuto pour ca ??

  19. #19
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par ahmedige Voir le message
    ,y'a t'elle FAQ ou tuto pour ca ??
    peut être que ca existe ou que ca existera un jour

    mais en consultant la Javadoc de la version que tu utilise, tu peux connaitre les méthodes deprecated
    javadoc JDK6

  20. #20
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Points : 68
    Points
    68
    Par défaut
    Et t'a une idée sur ce ligne de code ? sont remplacent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setCursor(JFrame.CROSSHAIR_CURSOR);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/09/2007, 14h04
  2. [SWING] Fenêtre avec différents composants
    Par soulhouf dans le forum Débuter
    Réponses: 5
    Dernier message: 17/08/2005, 13h01
  3. [XSL] Arbres intermédiaires avec xsl:sort ?
    Par Blustuff dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/07/2005, 10h09
  4. Animations avec différents objet
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 09/06/2004, 14h18
  5. [version] Requete Update avec différentes versions de mySQL
    Par regbegpower dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2004, 17h19

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