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 :

dessiner une ligne


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut dessiner une ligne
    bsr,je veux dessiner une ligne sur ma fenetre,
    j'ai procédé de la maniere suivante:
    j'ai créé une classe juste apré ma classe fenetre qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MapPane extends JPanel {
    	public void paintComponent(Graphics comp){
    		Graphics2D comp2D=(Graphics2D)comp;
    		comp2D.drawLine(1,400,600,400);
    	}
    }

    puis dans la classe fenetre j'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MapPane map=new MapPane();
                     getContentPane().add(map);
    j'ai pas de probleme de compilation mais je vois pas la ligne,qlq'1 peut me dire pk?
    et s'il y a un moyen plus simple de dessiner une ma class fenetre je serai reconnaissant,merci

  2. #2
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Bonjour,

    Avant tout appler
    super.paintComponent(comp);

    Ensuite avant de dessiner ta ligne faut lui donner une couleur
    comp2D.setColor(Color.red);

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    j'ai rajouté les 2 instructions mais tjr pas de ligne!!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Peut être que ton panel n'a pas une bonne taille (genre 0x0).

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Aucun probleme avec ton code, il fonctionne tres bien, meme sans l'appel a super.paintComponent() ni sans mettre de couleur particuliere :

    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
    package test;
     
    import java.awt.*;
    import javax.swing.*;
     
    /**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2006</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */
    public class MapPane extends JPanel {
      /** Creates a new instance.
       */
      public MapPane() {
        super();
      }
     
      /** {@inheritDoc}
       */
      @Override protected void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D) comp;
        comp2D.drawLine(1, 400, 600, 400);
      }
     
      /** Program entry point.
       * @param args Arguments from the command line.
       */
      public static void main(String ...args) {
        SwingUtilities.invokeLater(new Runnable() {
          /** {@inheritDoc}
           */
          public void run() {
            JFrame frame = new JFrame("Test");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(new MapPane(), BorderLayout.CENTER);
            frame.setSize(1000, 800);
            frame.setVisible(true);
          }
        });
      }
    }

    Regarde peut-etre du cote du layout de ta frame et verifie la taille de ton composant lorsqu'il est affiche.
    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

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    je vais essayer de mieux poser mon probleme,
    j'ai ajouté la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MapPane extends JPanel {
    	public void paintComponent(Graphics comp){
    		super.paintComponent(comp);
    		Graphics2D comp2D=(Graphics2D)comp;
    		comp2D.setColor(Color.red);
    		comp2D.drawLine(1,200,600,400);
    	}
    }
    maintenant je veux afficher une ligne que je fais appel à la classe toto,dans la classe toto j'ajoute:
    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
     
    public class toto extends JFrame{
            JPanel p;
    	public toto(){
     
    		super("ma classe");
    		p=new JPanel();
    		Container x=getContentPane();
    		x.setLayout(new FlowLayout());
    		MapPane map=new MapPane();
                              x.add(p);
    		setSize(800,600);
    		setVisible(true);
    		}                               
    }
    apparament c'est pas suffisant!!!

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Dans ce code map n'est jamais utilise.

    Ensuite si tu corriges ton code, tu t'appercevras que ta map n'a pas la bonne taille et que c'est la faute de ton layout. Tu peux t'en rendre compte en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println(map.getSize());
    map.setBorder(new LineBorder(Color.BLACK, 1));
    apres l'affichage de la fenetre. Resultat : ta map fait 10x10 il est normal que la ligne n'apparaisse jamais.

    Les solutions :
    - soit utiliser un autre layout.
    - soit forcer la minimumSize et/ou la preferredSize et/ou la size sur le composant map.
    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

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    comment ça dans mon code le map n'est pas utilisé!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MapPane map=new MapPane();
    c'est pas ce qu'il faut faire??


    et pour la layout,je dois utiliser quel layout pour régler le probleme?

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Lorsque tu écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MapPane map=new MapPane();
    tu ne fais qu'instancier ton objet mais tu ne l'utilises pas dans ton JFrame.
    Il te faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MapPane map=new MapPane();
    x.add(map);
    Pour la suite, tu utilises a FlowLayout qui tente de satisfaire la preferredSize des composants qu'il gère. Or, tu n'a pas définit de preferredSize à ton panel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.setPreferredSize(new Dimension(800,600));

    Voilà
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    que faire si je veux dessiner la ligne sur un JTextArea au lieu de le faire sur la fenetre??

Discussions similaires

  1. Dessiner une ligne
    Par hbzied dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 26/04/2006, 20h01
  2. Comment dessiner une ligne dans un Chart ?
    Par libititi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2005, 14h56
  3. [Image]Dessiner une ligne en dynamique
    Par Bugmaster dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 02/08/2004, 11h56
  4. Dessiner une ligne
    Par Bugmaster dans le forum 2D
    Réponses: 6
    Dernier message: 29/07/2004, 08h36
  5. Dessiner une ligne dans un cube transparent ?
    Par Muetdhiver dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/05/2004, 11h06

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