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
Class listener:
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 import java.awt.BorderLayout; import javax.swing.*; public class UI { JFrame fenetreFrame; JPanel principalPanel; TraceGraph graphPanel; JButton startButton; UI(){ fenetreFrame = new JFrame(); principalPanel = new JPanel(); graphPanel = new TraceGraph(this); startButton = new JButton("Start"); BorderLayout principalLayout = new BorderLayout(); principalPanel.setLayout(principalLayout); principalPanel.add("Center",graphPanel); principalPanel.add("South",startButton); fenetreFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetreFrame.setContentPane(principalPanel); fenetreFrame.setSize(800,600); fenetreFrame.setVisible(true); GestionE gestionevenements = new GestionE(this); startButton.addActionListener(gestionevenements); } }
Class qui trace une droite:
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 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; public class GestionE implements ActionListener { UI refUI; GestionE(UI refUI){ this.refUI = refUI; } @Override public void actionPerformed(ActionEvent e) { JButton sourceEvenement = (JButton) e.getSource(); if(sourceEvenement==refUI.startButton){ refUI.graphPanel.x1 = 200; refUI.graphPanel.y1 = 200; refUI.graphPanel.x2 = 300; refUI.graphPanel.y2 = 300; refUI.graphPanel.repaint(); } } }
Class main:
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 import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JPanel; public class TraceGraph extends JPanel{ UI refUI; int x1,x2,y1,y2; TraceGraph(UI refUI){ this.refUI = refUI; x1 = 0; y1 = 0; x2 = 100; y2 = 100; } public void paint(Graphics g){ g.drawLine(x1, y1, x2, y2); } }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Debut { /** * @param args */ public static void main(String[] args) { new UI(); } }
Si quelqu'un a une idée je suis preneur. Merci d'avance.
Partager