Bonjour,
j'essaye de créer un bouton pinceau c'est a dire quand je click sur ce bouton il me donne le droit de dessinez des rectangles ou ellipses.
Bonjour,
j'essaye de créer un bouton pinceau c'est a dire quand je click sur ce bouton il me donne le droit de dessinez des rectangles ou ellipses.
salut.
tu peux voir avec la classe TexturePaint.
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
moi je veut dessiner avec le curseur de la souris,est ce que TexturePaint permet de faire ca ??
oui tu peux le faire si tu applique la texture au contexte graphique
Code : Sélectionner tout - Visualiser dans une fenêtre à part Graphics2D_g.setPaint(texture);
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Merci de bien vouloir chercher dans les cours et tutoriels mis à disposition gracieusement par developpez.com
http://duj.developpez.com/tutoriels/java/dessin/intro/
voila par exemple le code que je doit utiliser mais moi a la place de définir la dimension du rectangle par code je doit mettre un Listner qui écoute le mouvement de la souris si je click ou pas,j'ai bien suivi le tuto de site développement mais j'arrive pas a trouve la solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Graphics2D g2 = (Graphics2D)img.getGraphics(); BufferedImage bi = new BufferedImage(5, 5,BufferedImage.TYPE_INT_RGB); Graphics2D big = bi.createGraphics(); big.setColor(Color.blue); big.fillRect(0, 0, 5, 5); big.setColor(Color.lightGray); big.fillOval(0, 0, 5, 5); Rectangle r = new Rectangle(0, 0, 5, 5); g2.setPaint(new TexturePaint(bi, r)); Rectangle rect = new Rectangle(5,5,200,200); g2.fill(rect);
un exemple :
et dans la méthode paintComponent()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void mousePressed(MouseEvent e) { x_rectangle = e.getX(); y_rectangle= e.gety(); repaint(); }
tu mets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 g2.setPaint(new TexturePaint(bi, r)); Rectangle rect = new Rectangle(x_renctangle,y_rectangle,200,200); g2.fill(rect);
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Tu peut m'explique le dernier code ,surtout la ligne,j'ai pas bien comprit sont role ,et pourquoi le mettre dans la méthode paintcompenant() je peut seulement le mettre au corps du bouton non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part g2.setPaint(new TexturePaint(bi, r));
La méthode setPaint() permet de choisir un type remplissage parmi plusieurs (implémentants l'interface Paint):
Couleurs unies ,ou un Dégradés ou une Textures(ton cas).
tu peux faire le dessin dans ton bouton en utilisant la méthode
getGraphics() pour récupérer un objet g de type Graphics2d et faire par la suitemais l'utilisation de getGraphics() engendre bcp de problèmes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part g.setPaint(new TexturePaint(bi, r))donc mieux vaut faire le dessin dans la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part paintComponent(Graphics g)
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Donc d'apres toi la methode paintComponent() doit etre comme ca:
et le code du bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Rectangle rect = new Rectangle(x_rectangle,y_rectangle,200,200); g.fill(rect);
;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Graphics2D g2 = (Graphics2D)img.getGraphics(); paintComponent(g2)
j'ai pas dis ca.
ton bouton dois faire un appel à la méthode paintComponent qui va se préoccuper du dessin( + déterminer la position du clique ou sera dessiner ton rectangle)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void mousePressed(MouseEvent e) { // abscisse et ordonnée du pixel ou on a cliqué x_rectangle = e.getX(); y_rectangle= e.gety(); // appel à la méthode paintComponent() pour faire le dessin repaint(); }
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Bonjour,
pardon mais j'arrive pas a te suivre ,Le nom de la méthode de mon bouton est:
Le code de paintComponent() est claire (même c il me souligne sur la méthode fill (cannot find symbol:methode fill(java.awt.rectangle))) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { }
enfin j'arrive a la méthode mousePressed(),comment j'utiliserai cette méthode et ce que je doit l'appelé dans la méthode de mon bouton c a d quand je click sur le bouton JButton2 il m'envoie a la méthode mousePressed () ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void paintComponent(Graphics g) { Rectangle rect = new Rectangle(x_rectangle,y_rectangle,200,200); g.fill(rect); }
faut ecrireta classe doit implémenter l'interface MouseListener, ensuite tu écrit la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part g.fillRect(...)
documentations : classe graphics2D
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void mousePressed(MouseEvent e) { // code à exécuter lors de l'appui sur le bouton de la souris. }
Gestion de de la souris
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
j'ai tout fait mais toujours j'arrive pas a dessinez une ligne par exemple ,peut être que c'est le problème de l'affichage surtout que moi j'essaye de le tracer dans une jpanel.
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 private int x; private int y; private int x1; private int y1; public void paintComponent(Graphics g) { g.drawLine(x,y,x1,y1); } public void mouseReleased(MouseEvent e) { x1 = e.getX(); y1= e.getY(); repaint(); } public void mousePressed(MouseEvent e) { x = e.getX(); y= e.getY(); repaint(); }
salut.
le repaint() ici peut être supprimé. tu fais le dessin que quand tu as spécifié les deux points( aprés le relachement du bouton de la souris).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void mousePressed(MouseEvent e) { x = e.getX(); y= e.getY(); repaint(); }
je suis sùr que tu as oublié de fairedans le constructeur de ton JPanel
Code : Sélectionner tout - Visualiser dans une fenêtre à part addMouseListener(this) ;.
un exemple vite fait :
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 import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; public class MainClass extends JPanel implements MouseListener{ private int x; private int y; private int x1; private int y1; public MainClass() { super(); addMouseListener(this) ; } protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(x,y,x1,y1); } public void mouseReleased(MouseEvent e) { x1 = e.getX(); y1= e.getY(); repaint(); } public void mousePressed(MouseEvent e) { x = e.getX(); y= e.getY(); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new MainClass()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500,200); frame.setVisible(true); } @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 } }
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Merci beaucoup Mohamed tu ma bien aidé.
J'ai une petite question pourquoi quelque fois le netbeans me souligne sur des lignes de code comme cette image en piecejoint.
salut.
il s'agit de méthodes supprimées ou susceptibles d'être supprimées dans les versions futurs/actuelles et il y a tjrs une méthode à utiliser à la place.
il existent encore pour assurer la compatibilité avec les versions précédentes et tu feras mieux de les éviter.
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Et comment je peut connaitre les méthodes à utiliser à la place,y'a t'elle FAQ ou tuto pour ca ??
peut être que ca existe ou que ca existera un jour
mais en consultant la Javadoc de la version que tu utilise, tu peux connaitre les méthodes deprecated
javadoc JDK6
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Et t'a une idée sur ce ligne de code ?sont remplacent
Code : Sélectionner tout - Visualiser dans une fenêtre à part setCursor(JFrame.CROSSHAIR_CURSOR);
Partager