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.
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);
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);
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... donc mieux vaut faire le dessin dans la méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part g.setPaint(new TexturePaint(bi, r))
Code : Sélectionner tout - Visualiser dans une fenêtre à part paintComponent(Graphics g)
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(); }
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
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 } }
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.
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
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);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager