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

Composants Java Discussion :

[JSlider] Taille de la zone clicable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut [JSlider] Taille de la zone clicable
    Bonjour,
    je mets une image sur le curseur d'un slider comme suit en étendant la classe MetalSliderUI :
    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
     
    public class MonSliderUI extends MetalSliderUI {
    	public void paintThumb(Graphics g) {
    	//-------------------------------
    		if (slider instanceof MonJSlider) {
    			Image image = ((MonJSlider)slider).getImage();
    			if (image == null) {
    				Color userColor = ((MonJSlider)slider).getColor();
    				g.setColor(userColor);
    				g.fillOval(thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height);
    			} else {
    				int height = image.getHeight(null);
    				int width = image.getWidth(null);
    				int centerX = thumbRect.x + (thumbRect.width/2);
    				int centerY = thumbRect.y + (thumbRect.height/2);
    				g.drawImage(image, centerX-(width/2), centerY-(height/2), width, height, null);
    				//on repaint le composant contenant l'image du thumb
    				Component component = ((MonJSlider)slider).getComponent();
    				component.repaint();
    			}
    		} else
    			super.paintThumb(g);
    	}
     
     
    	/**
             * surchage de paintTrack : fleche vers le haut de couleur du slider et d'épaisseur 3
             */
    	public void paintTrack(Graphics g) {
    	//--------------------------------------
    		if (slider instanceof MonJSlider) {
    			Graphics2D g2d = (Graphics2D) g;
    			Color userColor = ((MonJSlider)slider).getColor();
    			g2d.setColor(userColor);
    			//MonJSlider est un slider vertical
    			//if faudrait rajouter du code si MonJSlider pourrait être horizontal
    			int x = trackRect.x + trackRect.width/2;
    			//sauvegarde de l'épaisseur du trait
    			Stroke s = g2d.getStroke();
    			//trait épais
    			g2d.setStroke(new BasicStroke(3));
    			g2d.drawLine(x, trackRect.y, x, trackRect.y+trackRect.height);
    			g2d.drawLine(trackRect.x, trackRect.y+10, x, trackRect.y);
    			g2d.drawLine(trackRect.x + trackRect.width, trackRect.y+10, x, trackRect.y);
    			//retour au trait "normal"
    			g2d.setStroke(s);
     
    			drawSelected(g2d);
    		} else
    			super.paintTrack(g);
    	}
    Parfois cette image est un peu large et la zone "clicable" ne représente pas l'intégralité de l'image. J'ai regardé du coté de la surcharge de la méthode getTickLength mais sans avoir l'effet escompté ...
    Comment faire pour élargir la zone "clicable" ?

    j'ai lu http://www.developpez.net/forums/sho...d.php?t=278697 qui approche mon pb mais sans donner la solution.

    Merci de votre aide.

  2. #2
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut
    Bon ben j'ai la solution : il faut surcharger la méthode getThumbSize comme suit dans la classe MonSliderUI qui étend MetalSliderUI (par exemple...)
    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
     
    protected Dimension getThumbSize() {
        Dimension size = new Dimension();
     
        size = super.getThumbSize();
     
        Image image = ((MonJSlider)slider).getImage();
        int height = image.getHeight(null);
        int width = image.getWidth(null);
     
        if (width > size.width)
            size.width = width;
     
        if (height > size.height)
            size.height = height;
     
        return size;
    }

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

Discussions similaires

  1. Taille d'une zone de texte dans un état sous Access 2003
    Par Petite grenouille dans le forum Contribuez
    Réponses: 4
    Dernier message: 15/05/2006, 19h39
  2. Connaitre la taille de la zone de travail
    Par kivan666 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 12/04/2006, 15h41
  3. taille d'une zone de saisie
    Par somatino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 05/04/2006, 17h40
  4. Réponses: 9
    Dernier message: 13/04/2005, 10h15
  5. [JFrame] taille de la zone editable
    Par miel_pops dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 30/06/2004, 13h00

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