affichage dessin

affichage dessin - Java - Programmation

Marsh Posté le 14-09-2005 à 22:15:46    

Bonjour,
 
J'ai un frame ds laquelle j'ai un bouton et un jscrollpane avec a l'interieur un jpanel.En apuyant sur le bouton je voudrais afficher une ligne ds le jpanel.
 

Citation :

void dessine (Graphics g)  
                   {  
                       Graphics gc = getGraphics ();  
                       gc.drawLine(100, 100, 1000, 1000);  
                   
                     }


mais quand je redimensionne la fenetre ou je bouge le jscrollpane la ligne s'efface.J'ai regardé des anciens topics mais j'ai pas bien compris.

Reply

Marsh Posté le 14-09-2005 à 22:15:46   

Reply

Marsh Posté le 14-09-2005 à 22:35:36    

Ca par exemple ça peut aider : http://java.sun.com/docs/books/tut [...] cepts.html. Ensuite, quand y'a des évènements de modification de la fenêtre, enfin toute notification de changement alors il faut repaint ...
 


---------------
Linux registered user #352556
Reply

Marsh Posté le 15-09-2005 à 10:28:55    

Si tu veux que ça s'affiche même pendant un deplacement, override paint :
 
 public void paint( Graphics g )
 {
  super.paint( g );
  g.drawLine( .....

Reply

Marsh Posté le 15-09-2005 à 11:07:17    

N'oublie pas de surcharger getPreferredSize() pour le panel dans lequel tu dessines.

Reply

Marsh Posté le 15-09-2005 à 15:10:46    

:hello: Merci pour vos réponses.
 
Voici ce que j'ai fait:
 

Citation :

public  void paint(Graphics g) {
         super.paint(g);
 
       Graphics gc =jPanel1.getGraphics();
 
              gc.drawLine(100,100,1000,1000);
 
 
             }


 
et pour ne rien effacer un écouteur d'évènement sur le jpanel:
 

Citation :

void jPanel1_componentMoved(ComponentEvent e) {
repaint();
  }


 
 

Reply

Marsh Posté le 15-09-2005 à 15:40:45    

Une remarque : ok tu la taille de ton panel ne bouge pas. Si c'est pas le cas, utilise plutot des coordonnées relatives genre :  

Code :
  1. g.drawLine(this.getSize().width/10,this.getSize().height/10,this.getSize().width*9/10,this.getSize().height*9/10);


et puis tu surcharges la méthode getPreferredSize() de cette manière ( en supposant que ton panel sera toujours de 1000x1000 pixels ) :

Code :
  1. public Dimension getPreferredSize(){
  2. return new Dimension(1000,1000);
  3. }


Cette façon de faire est mieux, car portable d'une machine à une autre ( résolution écran, OS etc... ).

Reply

Marsh Posté le 15-09-2005 à 15:52:26    

et on ne surcharge pas paint mais paintComponent en swing [:dawao]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed