Dessiner des lignes et des points en java

Fermé
Mousab - 17 déc. 2020 à 08:43
bassoum_1781 Messages postés 1 Date d'inscription jeudi 17 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020 - 18 déc. 2020 à 19:12
Bonjour,

Bonjour à tous.je voudrais que en cliquant sur un bouttons qui represente les points de dessiner plusieurs point avec la souris sur mon jpanel puis cliquer sur un bouttons qui represente les lignes pour dessiner une lignes entre les differentes points de facons que quand je clique sur un point puis je clique sur un autre point une ligne se met en place s'ils vous plait je suis encore un debutant aidez-moi

voila mon code :



package mousab;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class CirclePaintTest implements Runnable, MouseListener {

private JFrame frame;

private PaintPanel paintPanel;

@Override
public void run(){
frame = new JFrame("Circle Paint Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());

paintPanel = new PaintPanel();
mainPanel.add(paintPanel, BorderLayout.CENTER);

JPanel buttonPanel = new JPanel();
JPanel buttonPane = new JPanel();
JButton lineButton = new JButton("Draw Lines");
final JButton pointButton = new JButton("desiner");
pointButton.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==pointButton ){
mainPanel.add(new PaintPanel());
mainPanel.repaint();
}


}

}
);

lineButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
if (paintPanel.isComplete()) {
paintPanel.setDrawLines(true);
paintPanel.repaint();
}
}
});
buttonPanel.add(lineButton);
buttonPane.add( pointButton);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);
mainPanel.add(buttonPane, BorderLayout.NORTH);
frame.add(mainPanel);

frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new CirclePaintTest());
}

public class PaintPanel extends JPanel {

private static final long serialVersionUID = 6481890334304291711L;

private final Color[] colors = { Color.RED, Color.GREEN, Color.BLUE,
Color.ORANGE, Color.CYAN, Color.YELLOW };

private boolean drawLines;

private final int pointLimit;

private final List<Point> points;

public PaintPanel(){
this.points = new ArrayList<Point>();
this.pointLimit = 3;
this.drawLines = false;

this.setPreferredSize(new Dimension(400, 400));
}

public void setDrawLines(boolean drawLines) {
this.drawLines = drawLines;
}

public boolean isComplete(){
return points.size() >= pointLimit;
}


public void paintComponent(Graphics g) {
super.paintComponent(g);

Point pp = null;
Point p0 = null;

for (int i = 0; i < points.size(); i++) {
g.setColor(colors[i]);

Point p = points.get(i);
g.fillOval(p.x - 20, p.y - 20, 40, 40);

pp = p;
}

if (drawLines && (points.size() > 1)) {
p0 = points.get(0);
pp = p0;
g.setColor(Color.BLACK);
for (int i = 1; i < points.size(); i++) {
Point p = points.get(i);
g.drawLine(pp.x, pp.y, p.x, p.y);
pp = p;
}
g.drawLine(pp.x, pp.y, p0.x, p0.y);
}
}

public class CircleMouseListener extends MouseAdapter {

@Override
public void mousePressed(MouseEvent event) {
if (points.size() < pointLimit) {
points.add(event.getPoint());
PaintPanel.this.repaint();
}
}
}


}

@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}
}
A voir également:

1 réponse

bassoum_1781 Messages postés 1 Date d'inscription jeudi 17 décembre 2020 Statut Membre Dernière intervention 18 décembre 2020
Modifié le 18 déc. 2020 à 19:12
je sais pas vraiment d'ou vient l'erreur s'il vous plait aidez-moi !!
0