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 c'est un projet a rendre aidez-moi
voila mon code :i
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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 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 CircleMouseListener()); 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()); } @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 } }
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 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.drawLines = false; this.setPreferredSize(new Dimension(400, 400)); } 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); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class CircleMouseListener extends MouseAdapter { @Override public void mousePressed(MouseEvent event) { points.add(event.getPoint()); PaintPanel.this.repaint(); } } }
Partager