Hi, im working on a "paint" program. So far, i have a GUI with 1 button "Ligne" and one drawable panel. in my class Paint_Dessin, theres a method call TracerLigne(). this method draw line folowing a random patern. What i want to do is put a mouselistener so x1,y1 = click1 and x2,y2 = click 2. this is my code. Thank you (sorry for the french comment)

//cree une fenetre
public class QUESTION
public static void main(String[] args)
Paint_GUI test2 = new Paint_GUI();
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Paint_GUI extends JFrame
//Panels contenant tout les bouton de mon interface
private JPanel panelBtn;

//Bar d'outil Btn
private JButton BtnTracerLigne;

//créer l'objet Paint_Dessin
private Paint_Dessin espaceDessin = new Paint_Dessin();

public Paint_GUI()
final int WINDOW_WIDTH = 650;
final int WINDOW_HEIGHT = 450;

setTitle("Paint v.2.0");
setLayout(new BorderLayout());

// Appeler la methode qui construit la barre de BTN.
add(panelBtn, BorderLayout.NORTH);
add(espaceDessin, BorderLayout.CENTER);

// Afficher la fenetre.

private void buildPanelBtn()
BtnTracerLigne = new JButton("Ligne");
BtnTracerLigne.addActionListener(new LigneListener());

// Creer le panel.
panelBtn = new JPanel();
// Ajouter les composantes au label
private class LigneListener implements ActionListener
public void actionPerformed(ActionEvent e)

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;
import java.awt.image.*;

class Paint_Dessin extends JPanel {
private static final long serialVersionUID = -2110723486099015303L;
private static final Random RAND = new Random();
private BufferedImage buffer = null;

public void paintComponent(final Graphics g) {
final Graphics2D g2 = (Graphics2D) g;
g2.clearRect(0, 0, getWidth(), getHeight()); // cleanup du composant
g2.drawImage(getBuffer(), null, 0, 0);

public void TracerLigne() {
final Graphics2D g2 = getBuffer().createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASIN G,
// dessin la ligne au pif dans l'espace visible
final int x1 = RAND.nextInt(500); // position en X1
final int y1 = RAND.nextInt(500); // position en Y1
final int x2 = RAND.nextInt(500); // position en X2
final int y2 = RAND.nextInt(500); // position en Y2
g2.drawLine(x1, y1, x2, y2);
Line2D.Double line = new Line2D.Double(x1, y1, x2, y2);

private BufferedImage getBuffer() {
if (buffer == null)
buffer = new BufferedImage(getWidth(), getHeight(),
return buffer;