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

  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] repaint(), je comprends pas.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] repaint(), je comprends pas.

n°1592541
plzhelp
Posté le 27-07-2007 à 17:01:50  profilanswer
 

J'aimerais tracer des courbes quand j'appuie sur un bouton mais le probleme que j'ai c'est que si je trace une courbe et que j'appuie ensuite sur un bouton pour en tracer une nouvelle je me retrouve avec deux courbes qui se superposent alors que je ne voudrais d'afficher que la nouvelle courbe.
 
Je poste mon code car je ne vois vraiment pas ou peut bien etre mon erreur:
 
Class qui crée mon UI

Code :
  1. import java.awt.BorderLayout;
  2. import javax.swing.*;
  3. public class UI {
  4. JFrame fenetreFrame;
  5. JPanel principalPanel;
  6. TraceGraph graphPanel;
  7. JButton startButton;
  8. UI(){
  9.  fenetreFrame = new JFrame();
  10.  principalPanel = new JPanel();
  11.  graphPanel = new TraceGraph();
  12.  startButton = new JButton("Start" );
  13.  BorderLayout principalLayout = new BorderLayout();
  14.  principalPanel.setLayout(principalLayout);
  15.  principalPanel.add("Center",graphPanel);
  16.  principalPanel.add("South",startButton);
  17.  fenetreFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18.  fenetreFrame.setContentPane(principalPanel);
  19.  fenetreFrame.setSize(800,600);
  20.  fenetreFrame.setVisible(true);
  21.  GestionE gestionevenements = new GestionE(this);
  22.  startButton.addActionListener(gestionevenements);
  23. }
  24. }


 
Class listener:

Code :
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JButton;
  4. public class GestionE implements ActionListener {
  5. UI refUI;
  6. GestionE(UI refUI){
  7.  this.refUI = refUI;
  8. }
  9. @Override
  10. public void actionPerformed(ActionEvent e) {
  11.  JButton sourceEvenement = (JButton) e.getSource();
  12.  if(sourceEvenement==refUI.startButton){
  13.   refUI.graphPanel.x1 = 200;
  14.   refUI.graphPanel.y1 = 200;
  15.   refUI.graphPanel.x2 = 300;
  16.   refUI.graphPanel.y2 = 300;
  17.   refUI.graphPanel.repaint();
  18.  }
  19. }
  20. }


 
Class qui trace une droite:

Code :
  1. import java.awt.Graphics;
  2. import java.awt.Graphics2D;
  3. import javax.swing.JPanel;
  4. public class TraceGraph extends JPanel{
  5. int x1,x2,y1,y2;
  6. TraceGraph(){
  7.  x1 = 0;
  8.  y1 = 0;
  9.  x2 = 100;
  10.  y2 = 100;
  11. }
  12. public void paint(Graphics g){
  13.  g.drawLine(x1, y1, x2, y2);
  14. }
  15. }


 
Class main:

Code :
  1. public class Debut {
  2. /**
  3.  * @param args
  4.  */
  5. public static void main(String[] args) {
  6.  new UI();
  7. }
  8. }


 
Donc quand mon programme se lance il trace une droite qui va de (0,0) à (100,100) et ce qu'il devrait faire en pressant le bouton "Start" c'est tracer une nouvelle droite qui va de (200,200) à (300,300) tout en effacant la precedente pour n'avoir qu'une droite à l'ecran or là je me retrouve avec 2 droites.
 
Si quelqu'un a une idée je suis preneur. Merci d'avance.


Message édité par plzhelp le 27-07-2007 à 18:05:14

---------------
...
mood
Publicité
Posté le 27-07-2007 à 17:01:50  profilanswer
 

n°1592557
omartin
Posté le 27-07-2007 à 17:31:32  profilanswer
 

Non tu dois effacer ta zone en appliquant par exemple un fillRect avec la bonne taille dans ta zone de dessin. C'est le seul moyen d'effacer ta zone.

n°1592562
plzhelp
Posté le 27-07-2007 à 17:43:02  profilanswer
 

Bon je viens d'essayer, ca marche pas. A moins qu'il ne faille pas mettre le fillRect dans la methode paint(). Merci quand meme.


Message édité par plzhelp le 27-07-2007 à 17:55:14

---------------
...
n°1592566
plzhelp
Posté le 27-07-2007 à 17:57:37  profilanswer
 

Ok, en fait le probleme est bien plus compliqué que ca. Je viens de me rendre compte que le fillRect marche, mais l'apercu de la fenetre ne s'actualise pas.
 
Je me suis rendu compte que ca marchait en minimisant la fenetre puis en la faisant reapparaitre et la en effet ma premiere droite avait disparu.
 
Une idee sur la provenance de ce probleme de "rafraichissement"?


Message édité par plzhelp le 27-07-2007 à 17:57:59

---------------
...
n°1592567
plzhelp
Posté le 27-07-2007 à 18:04:55  profilanswer
 

En fait j'ai trouvé, je fais un repaint de ma frame et ca marche, merci omartin pour ton aide :)


---------------
...

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

  [Resolu] repaint(), je comprends pas.

 

Sujets relatifs
[Résolu] Problème de décalage de date java sous windows vista[résolu] extraction du nom de fichier d'une url
[RESOLU] MySQL jointure sur clé primaire LENTE[RESOLU] exec -> exit php
[Résolu] Affichage variable de champs texte en DreamweaverFenêtre generées "load" "save" automatiquement en pythonQT # Resolu #
[Résolu] [SQL] comment afficher un grand nombre ?[résolu] Exécuter une requête à partir d'un champ
[RESOLU]Fichier pour executer requete et envoyer par email 
Plus de sujets relatifs à : [Resolu] repaint(), je comprends pas.


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