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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    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 expérimenté Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    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 averti
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Par défaut
    j'ai rajouté les 2 instructions mais tjr pas de ligne!!!

  4. #4
    Membre émérite
    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
    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 906
    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 906
    Billets dans le blog
    54
    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 averti
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    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 906
    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 906
    Billets dans le blog
    54
    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

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