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 :

[débutant] dessin graphique


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut [débutant] dessin graphique
    Bonjour,

    Je recherche le moyen de dessiner un bête rectangle plein dans un tableau d'un panel mais je ne trouve pas le moyen d'utiliser correctement la classe Graphics avec la méthode paint(Graphics g).

    Quelqu'un pourrait-il m'éclairer :

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Qu est ce que tu veux faire exactement ?
    Colorier une case d'une JTable?
    Faire un rectangle plein dans une case d'une JTable?
    Qu'est ce que tu entends par tableau?
    Mess with the best, die like the rest!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Si tu as les 2 méthodes, je suis preneur. Mais je cherche surtout à faire un rectangle graphique.
    Pour le tableau, j'utilise le composant JTable.

    Merci de ton aide.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Solution 1 : Colorer le fond d'une cellule

    Pour cela tu doit passer par un TableCellRenderer. Si tu ne c pas comment ca marche, tu trouveras plein d'exemple en faisant une recherche appropriée.
    Le principe n'est pas tres compliqué une fois que tu l'as compris
    Voila déjà un lien avec des exemples simples, à toi dans trouver d'autre :
    http://brassens.upmf-grenoble.fr/IMS...SwingTable.htm

    Solution 2 : Dessiner un rectangle où tu veux

    pour cela il faut que tu surcharge la méthode paint(Graphics g) de la classe JTable. Ca peut donner qqchose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void paint(Graphics g) {
    super.paint(g);
     
    //on suppose que tu veuilles faire un rectangle rouge
    //dans la case de la ligne i et de la colonne j
    Rectangle r = this.getCellRect(i,j,false);
     
    g.setColor(Color.RED);
    g.fillRect(r.x,r.y,r.width,r.height);
    }
    Et voila le tour est joué

    ps : ce n'est pas un probleme Eclipse que tu as. Poste ce genre de sujet dans le forum Général Java tu auras nettement plus de réponses.

    ++
    Mess with the best, die like the rest!

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Points : 165
    Points
    165
    Par défaut
    pour dessiner des rectangles, cercles ... et j'en passe il faut que tu utilise la fonction paint ou paintComponent que possede tous les components (table, fenetre, layer, aplet ...)

    cette methode est appelee a chaque fois que le .setVisible de ton Component est mis a true ... et tu as donc access directement a l'element Graphic du Component ...

    c la classe component qui se charge de tout ... lorsque tu fais le visible : elle appelle cette methode avec son element graphic propre et le tour est joue ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void paint(Graphics g) {
       g.drawLine(50,25,100,25);
    }
    tu peux dessiner ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void drawRect(int x, int y, int w, int h)
    void fillRect(int x, int y, int w, int h)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    super, merci pour l'explication, je place ma méthode paint dans ma classe ou je crée l'interface graphique (JPanel) mais je ne sais pas encore ce qu'il faut mettre dans ta fonction "drawRect", bien que je me doute qu'il s'agisse des coordonnées du rectangle. Je suis un peu perdu là.

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Points : 165
    Points
    165
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void drawRect(int x, int y, int w, int h)
    void fillRect(int x, int y, int w, int h)
    x = position horizontal ...
    y = position vertical ...
    w = largeur du rectangle ...
    h = hauteur du rectangle

    et si tu veux que ton rectangle soit rempli : utilise fillRect

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    En fait ce que je demandais, c'était si les fonctions drawRect et fillRect sont interne à la classe graphique qu'il faut utiliser dans la méthode paint?

    J'ai remarqué dans tous les exemples postés qu'ils utilisent l'applet. Comme je développe une application (et pas une applet), ces exemples ne marchent pas (pas d'erreur de compilation mais rien n'apparait).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Je ne vois pas quel est ton probleme.
    Tu ne comprend pas la classe Graphics ?
    La méthode paint(Graphics g) ?

    Le paramètre g de la méthode paint est un lien vers l'objet graphique de l'élément que tu dessine (celui qui contient la méthode paint) et qui te permettra de faire les dessin que tu veux dessus.

    Le fait d'appeler super.paint(g) au début permet tout d'abord de dessiner le composant normalement.
    Ce qui tu ajoute en dessous vient s'ajouter au dessin du composant.
    Et sur cet objet graphique il y a des méthodes qui sont définie permettant de faire des figures comme des rectangles, des lignes, des cercles ...

    Si tu veux un exemple qui marche en voila un :
    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
    public class Test {
     
     
     
    	public static void main(java.lang.String[] args) {
     
    		String[] columnNames = {"First Name",
    				"Last Name",
    				"Sport",
    				"# of Years",
    		"Vegetarian"};
     
    		Object[][] data = {
    				{"Mary", "Campione",
    					"Snowboarding", new Integer(5), new Boolean(false)},
    					{"Alison", "Huml",
    						"Rowing", new Integer(3), new Boolean(true)},
    						{"Kathy", "Walrath",
    							"Knitting", new Integer(2), new Boolean(false)},
    							{"Sharon", "Zakhour",
    								"Speed reading", new Integer(20), new Boolean(true)},
    								{"Philip", "Milne",
    									"Pool", new Integer(10), new Boolean(false)}
    		};
     
    		JTable table = new JTable(data, columnNames) {
    			public void paint(Graphics g) {
    				super.paint(g);
    				Rectangle r = this.getCellRect(1,1,false);
     
    				g.setColor(Color.RED);
    				g.fillRect(r.x,r.y,r.width,r.height); 
    			}
    		};
     
    		JFrame frame = new JFrame();
     
    		JScrollPane jsp = new JScrollPane(table);
    		frame.getContentPane().add(jsp,BorderLayout.CENTER);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(200,200);
    		frame.setVisible(true);
    	}
     
    }
    Voila j espere que ca repond à toutes tes questions

    ++
    Mess with the best, die like the rest!

  10. #10
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 258
    Points : 165
    Points
    165
    Par défaut
    c ca drawRect est une methode de la classe Graphics ...
    et tous les components possede un objet graphic pour etre afficher donc les applets l'utilisent pour etre afficher comme tout autres composant, ce qui signifie qu'il n'y a aucun pb pour ton apli ... tu peux tres bien utilise un JPanel ou meme un Layer pour cela car tous ces objets heritent de la classe components ....

    dit moi si c pas clair (ca ne l'ete pas pour moi au debut)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    merci pour vos cnseil, je vais essayer de débroussailler le tout.
    je commence à comprendre le fonctionnement mais je ne le maitrise pas encore...
    Je tente d'introduire un dessin dans un jpanel qui se trouve déjà dans un jpanel d'une jframe (mais non c'est simple).
    j'annoncerai mon resultat des que possible.

    Merci encore

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Je viens d'y arriver, enfin...
    Merci à tous pour votre aide, le problème venait du fait que je n'instanciais pas la méthode paint dans mon composant mais dans la classe ce qui faisait que je pouvais attendre longtemps mon graphique.
    me voilà pret à gravir un echellon du java.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Interface graphique avec eclipse
    Par steelidol dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 08/06/2006, 13h12
  2. Réponses: 1
    Dernier message: 04/05/2006, 16h45
  3. [Débutant]Appli Graphique
    Par Lucier dans le forum Interfaces Graphiques en Java
    Réponses: 21
    Dernier message: 15/01/2005, 21h03
  4. [débutant]Interface graphique Récalcitrante
    Par chleuh dans le forum Débuter
    Réponses: 2
    Dernier message: 12/12/2004, 10h21
  5. [Débutant] dessiner des carrés
    Par Dark-Lab dans le forum 2D
    Réponses: 13
    Dernier message: 27/08/2004, 10h50

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