IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Changer la taille de mon outil de dessin


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut Changer la taille de mon outil de dessin
    Bonjour,
    Je souhaite pouvoir dessiner dans un JPanel en changeant changer la taille de mon "crayon" en cliquant sur les boutons small et large. Voici où j'en suis:
    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
    public class Paint extends JDialog {
     
    	PanelPaint p = new PanelPaint(); 
    	private JPanel panCenter = new JPanel();
    	private JPanel panWest = new JPanel();
    	private JButton buttonSmall = new JButton("small");
    	private JButton buttonLarge = new JButton("large");
     
    	public Paint(){
    		setSize(400,400);
    		setLocationRelativeTo(null);
     
    		//panel CENTER
    		p.setBackground(Color.WHITE);
    		add(p, BorderLayout.CENTER);
     
    		//panl WEST
    		panWest.add(buttonSmall);
    		panWest.add(buttonLarge);
    		add(panWest, BorderLayout.WEST);
     
    		//functionality 
    		buttonSmall.addActionListener(e->p.setCrayonSize(1));
    		buttonLarge.addActionListener(e->p.setCrayonSize(8));
     
    	}
    	class sizeCrayon implements ActionListener{
    		private final int valeur;
     
    		public sizeCrayon (int valeur){
    			this.valeur=valeur;
    		}
     
    		public void actionPerformed(ActionEvent e) {
    			p.setCrayonSize(valeur);
    		}
    	}
     
    	public static void main(String[] args) {
     
    		Paint p = new Paint();
    		p.setVisible(true);
    	}
    }
    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
    public class PanelPaint extends JPanel{
    	private int pointCount=0;
    	private int currentValeur=4;
    	private int valeur;
     
    	//array of 10000java.awt.Point references
    	private DrawingPoint []points = new DrawingPoint [10000];
     
    	public PanelPaint(){
    		addMouseMotionListener(
    				new MouseMotionAdapter(){
    					public void mouseDragged(MouseEvent event){
    						if(pointCount<points.length){
    							points[ pointCount ] = new DrawingPoint (event.getPoint(), valeur); // find point
    							++pointCount; // increment number of points in array
    							repaint(); // repaint JFrame
    						} // end if
    					} // end method mouseDragged
    				}
    				);
    	}
     
    	public class DrawingPoint {
    		public int x;
    		public int y;
    		public int valeur;
    		public DrawingPoint(Point point, int valeur) {
    			this.x=point.x;
    			this.y=point.y;
    			this.valeur=valeur;
    		}
    	}
     
    	// draw ovals in a 4-by-4 bounding box at specified locations on window
    	public void paintComponent( Graphics g )
    	{
    		super.paintComponent( g ); // clears drawing area
     
    		// draw all points in array
    		for ( int i = 0; i < pointCount; i++ ){
    		g.fillOval( points[i].x-2, points[i].y-2, currentValeur, currentValeur );}
    	} // end method paintComponent
     
    	public void setCrayonSize(int valeur){
    		currentValeur=valeur;
    	}
    } // end class PaintPanel
    Le problème est que si je clique sur large (par exemple), tous mon dessin sera agrandi, alors que je voudrais pouvoir dessiner des lignes de tailles diverses.
    Merci

  2. #2
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    le problème c'est que dans ton paintcomponent() tu prend la valeur couranteau lieu de celle associé au point.

    remplace par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.fillOval( points[i].x-2, points[i].y-2, points[i].valeur, points[i].valeur);}

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Plus précisément, remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.fillOval( points[i].x- valeur/2, points[i].y-valeur/2, points[i].valeur, points[i].valeur);}

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Merci pour vos réponses. Que faut-il changer d'autre dans le code? Parce qu'en remplaçant seulement la ligne g.fillOval...,
    ça ne fonctionne pas

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Mai 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2015
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Tout est OK. J'ai juste changé valeur par currentValeur dans mouseDragged. Merci beaucoup pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/12/2012, 10h40
  2. Intégrer un outil de dessin vectoriel à mon site Web
    Par Benoit7114 dans le forum Outils
    Réponses: 2
    Dernier message: 14/09/2010, 11h07
  3. Changer la taille et/ou pos de la taskBar
    Par Sunny dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/07/2005, 17h15
  4. Comment changer la taille Text < 8
    Par Xavier dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/10/2004, 09h24
  5. Changer la taille d'un tableau déjà initialisé
    Par totofweb dans le forum C++
    Réponses: 2
    Dernier message: 25/07/2004, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo