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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    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
    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);}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre averti
    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
    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
    Membre averti
    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
    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, 09h40
  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, 10h07
  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, 16h15
  4. Comment changer la taille Text < 8
    Par Xavier dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/10/2004, 08h24
  5. Changer la taille d'un tableau déjà initialisé
    Par totofweb dans le forum C++
    Réponses: 2
    Dernier message: 25/07/2004, 15h55

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