Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1292 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème affichage graphique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème affichage graphique

n°1481904
maxbl
Posté le 26-11-2006 à 15:12:28  profilanswer
 

Bonjour
Je débute en Java et j'ai un petit problème avec Graphics. Quand je lui demande de tracer une ligne:
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. class Dess{
  4. static Graphics ouvreFenetre(int l, int h) {
  5. Frame fenetre = new Frame("Dessin" );
  6. fenetre.addWindowListener(new WindowAdapter() {
  7.  public void windowClosing(WindowEvent we) {
  8.      System.out.println("Fenetre fermee, c'est fini." );
  9.      System.exit(0);
  10.  }
  11.     });
  12. fenetre.setBounds(10,10, l, h);
  13. fenetre.setBackground(Color.white);
  14. fenetre.setForeground(Color.black);
  15. fenetre.setVisible(true);
  16. return fenetre.getGraphics();
  17.     } 
  18.         public static void main(String[] args) {
  19.   final int largeur = 200, hauteur = 100;
  20.   Graphics gr = ouvreFenetre(largeur, hauteur);
  21.   gr.drawLine(0,0,150,100);
  22.          }
  23. }


 
je crois que la ligne s'affiche mais elle est aussitot effacée.
Si je mets 1000 Drawline elle ne s'efface pas car elle se retrace tout le temps mais existe t'il une autre solution à ce problème?

mood
Publicité
Posté le 26-11-2006 à 15:12:28  profilanswer
 

n°1482065
simboss
Posté le 27-11-2006 à 00:23:26  profilanswer
 

Apres recherches, il faut redefinir la methode PaintComponent d'un panel a priori.
 
Maintenant si tu ne veux pas te prendre la tete, tu fais une boucle While avec une condition du genre While(1), mais c'est pas tres elegant.

n°1482488
maxbl
Posté le 27-11-2006 à 17:44:07  profilanswer
 

simboss a écrit :

Apres recherches, il faut redefinir la methode PaintComponent d'un panel a priori.
 
Maintenant si tu ne veux pas te prendre la tete, tu fais une boucle While avec une condition du genre While(1), mais c'est pas tres elegant.


 
J'ai cherché paintcomponent dans javadoc et j'ai trouvé des trucs mais je ne vois pas trop ce que je peux faire.
C'est bizarre aussi je n'ai pas le problème sur la version 1.4.2 ca marche.
Est-ce que avec mon programme et la version 1.5.0 ca marche sur ton ordinateur?

n°1482749
simboss
Posté le 28-11-2006 à 01:23:21  profilanswer
 

A priori sous eclipse avec la version 1.5 ca marche encore, maintenan je ne certifie rien, Eclipse fait bcp de chose que l'on ne lui demande pas.  
 
Tu utilises quoi pour compiler et executer?
 
Ton probleme c'est que la ligne s'efface mais la fenetre reste ou tout s'efface? Normalement elle s'affiche, mais si tu bouges ta fenetre, ou si tu passes une autre fenetre par dessus ta ligne disaparait, parce que rien ne dit a ton programme ce qu'il faut reafficher quand il se passe qqch dans le genre, c'est a ca que sert la redefinition de paintcomponent normalement.
 
Sinon paintComponent ca demande de faire vraiment differement ton programme, je ne sais pas si tu as deja vu tout ca, le plus simple ca serait d'aller voir un tuto dans ce cas.

n°1483306
maxbl
Posté le 28-11-2006 à 18:32:02  profilanswer
 

simboss a écrit :

A priori sous eclipse avec la version 1.5 ca marche encore, maintenan je ne certifie rien, Eclipse fait bcp de chose que l'on ne lui demande pas.  
 
Tu utilises quoi pour compiler et executer?
 
Ton probleme c'est que la ligne s'efface mais la fenetre reste ou tout s'efface? Normalement elle s'affiche, mais si tu bouges ta fenetre, ou si tu passes une autre fenetre par dessus ta ligne disaparait, parce que rien ne dit a ton programme ce qu'il faut reafficher quand il se passe qqch dans le genre, c'est a ca que sert la redefinition de paintcomponent normalement.
 
Sinon paintComponent ca demande de faire vraiment differement ton programme, je ne sais pas si tu as deja vu tout ca, le plus simple ca serait d'aller voir un tuto dans ce cas.


 
Pour compiler et exécuter j'utilise les commandes javac et java sous DOS.
 
La fenêtre reste en place mais la ligne s'efface.meme si je fais rien du tout la ligne disparait (en fait je le vois pas tellement c'est rapide mais je le sais avec le *1000.)

n°1485190
doctib
Posté le 01-12-2006 à 18:45:50  profilanswer
 

au moment ou tu l'utilise, ton "getGraphics()" te renvoit quelque chose de null...
 
il faut en fait que tu mette un peu de code dans la méthode paint ou repaint, pourquoi?
 
parce que pour se dessiner (paint) ou redessiner(repaint) :), la fenetre va aller lire le code qu'il y a dans ces méthodes.
 
voilà un exemple rapide, et plus correct avec le model object. Si tu as une quesiton n'hésites pas:
 
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. class Dess extends Frame{
  4. public Dess(int l, int h) {
  5.  super("Fenetre Dess" );
  6.  this.addWindowListener(new WindowAdapter() {
  7.   public void windowClosing(WindowEvent we) {
  8.    System.out.println("Fenetre fermee, c'est fini." );
  9.    System.exit(0);
  10.   }
  11.  });
  12.  this.setSize(l, h);
  13.  this.setBackground(Color.white);
  14.  this.setForeground(Color.black);
  15.  this.setVisible(true);
  16. }
  17. private void dessineUnTrait(int xStart,int yStart,int xEnd,int yEnd ){
  18.  Graphics g = this.getGraphics();
  19.                 // je teste si g et non nul
  20.  if (g != null) {
  21.                 System.out.println("g null, peux pas dessiner :(" )
  22.                 g.drawLine(xStart, yStart, xEnd, yEnd);
  23.         }       
  24. }
  25.     @Override
  26.     public void paint(Graphics arg0) {
  27.      super.paint(arg0);
  28.  arg0.drawLine(0,0,150,100);
  29.     }
  30. public static void main(String[] args) {
  31.  final int largeur = 200, hauteur = 100;
  32.  Dess dessin = new Dess(largeur, hauteur);
  33. }
  34. }


Message édité par doctib le 01-12-2006 à 18:48:31
n°1826313
fleure2008
Posté le 12-12-2008 à 21:10:17  profilanswer
 

bonsoir à tous, je travail sur un projet, et je veux représenter mes donner sous forme d'un modèle de réseau de pétri, pouvez vous m'aider pour dessiner le modèle de réseau (graphe ou réseau de pétri,)
meri à tous.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème affichage graphique

 

Sujets relatifs
probleme de post sur un retour même pageProblème héritage entre 2 classes
Probléme IE/FFAffichage bordure tableau IE
Problème de fonctionnement de script PHP apres migrationProblème de passage des accents avec IE7 (utf8 et iso)
probleme referencement[ RESOLU ] Probleme avec les sessions de chez free
Problème avec un listbox - Help!!!Debutant - problème site IE / FF
Plus de sujets relatifs à : Problème affichage graphique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR