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 :
- 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();
- 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 listener:
Code :
- 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 qui trace une droite:
Code :
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import javax.swing.JPanel;
- public class TraceGraph extends JPanel{
- int x1,x2,y1,y2;
- TraceGraph(){
- x1 = 0;
- y1 = 0;
- x2 = 100;
- y2 = 100;
- }
- public void paint(Graphics g){
- g.drawLine(x1, y1, x2, y2);
- }
- }
|
Class main:
Code :
- public class Debut {
- /**
- * @param args
- */
- public static void main(String[] args) {
- new UI();
- }
- }
|
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
---------------
...