Effacer mon dessin sur mon JPanel
Bonjour à tous!
Je souhaite pouvoir effacer ce que je dessine en cliquant sur le JButton clear.
Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
public class Paint extends JDialog {
public PaintPanel p = new PaintPanel();
private JPanel panNorth = new JPanel();
private JPanel panWest = new JPanel();
private JButton buttonClear = new JButton("clear");
private JButton buttonPalette = new JButton();
private JButton buttonBlue = new JButton();
private JButton buttonRed = new JButton();
private JLabel position = new JLabel();
public Paint(){
setModal(true);
setSize(300,500);
setLocationRelativeTo(null);
//panCENTER ajouter le panel class Paint
p.setBackground(Color.WHITE);
add(p, BorderLayout.CENTER);
//panWEST creation de la palette couleur
buttonPalette.setLayout(new GridLayout(8,2));
buttonPalette.setPreferredSize(new Dimension(70, 160));
buttonPalette.setContentAreaFilled(false);
buttonPalette.setBorderPainted(false);
buttonPalette.add(buttonBlue);
buttonPalette.add(buttonRed);
panWest.add(buttonPalette);
panWest.setPreferredSize(new Dimension(50, 300));
//positionner boutons dans panel
add(panWest , BorderLayout.WEST);
//panWEST buttons
buttonBlue.setBackground(Color.BLUE);
buttonRed.setBackground(Color.RED);
//panNORTH
panNorth.add(buttonClear);
add(panNorth, BorderLayout.NORTH);
// Functionality buttons
buttonRed.addActionListener(e-> p.setDrawingColor(Color.RED));
buttonBlue.addActionListener(e-> p.setDrawingColor(Color.BLUE));
buttonClear.addActionListener(new ClearClick());
}
class sizeCrayon implements ActionListener{
private final int valeur;
public sizeCrayon (int valeur){
this.valeur=valeur;
}
public void actionPerformed(ActionEvent e) {
p.setCrayonSize(valeur);
}
}
class ChangeColor implements ActionListener{
private final Color color;
public ChangeColor(Color color){
this.color=color;
}
public void actionPerformed(ActionEvent e) {
p.setDrawingColor(color);
}
}
class ClearClick implements ActionListener {
public void actionPerformed(ActionEvent arg0){
p.effacer();
}
}
public static void main(String[] args) {
Paint p = new Paint();
p.setVisible(true);
}
} |
Et voici ma deuxième classe
Code:
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
public class PaintPanel extends JPanel{
private int pointCount=0;
private Color currentColor;
private int valeur;
private int currentValeur=4;
//array of 10000java.awt.Point references
private DrawingPoint[]points = new DrawingPoint[10000];
private PaintPanel p;
public PaintPanel(){
setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent event){
if(pointCount<points.length){
points[ pointCount ] = new DrawingPoint (event.getPoint(),currentColor, currentValeur);
++pointCount;
repaint();
}
}
}
);
}
public class DrawingPoint {
public int x;
public int y;
public int valeur;
public Color color;
public DrawingPoint(Point point, Color color, int valeur) {
this.color=color;
this.x=point.x;
this.y=point.y;
this.valeur=valeur;
}
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
for (int i=0; i<pointCount; i++){
g.setColor(points[i].color);
g.fillOval(points[i].x-valeur/2, points[i].y-valeur/2, points[i].valeur, points[i].valeur);
}
}
public void setDrawingColor(Color color){
currentColor=color;
}
public void setCrayonSize(int valeur){
currentValeur=valeur;
}
//effacer le panel
public void effacer(){
//qu'est-ce que je peux mettre pour effacer le contenu du JPanel ?
this.setForeground(Color.WHITE);
this.repaint();
}
} // end class PaintPanel |
J'ai commencé avec une méthode effacer() mais elle n'est pas complète. Quelqu'un peut-il m'indiquer le déroulement?
Merci :lol: