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

Agents de placement/Fenêtres Java Discussion :

Etendre la zone cliquable d'un JScrollBar


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 23
    Par défaut Etendre la zone cliquable d'un JScrollBar
    Bonjour,

    Je débute en java et je souhaiterais étendre la zone cliquable de deux JScrollBar (un horizontal et un vertical) à toute la fenêtre.
    j'ai donc 2 questions:

    Est ce que ca peut fonctionner? conflit éventuel entre les deux même si cela me semble peu probable vu que l'un devrait capter les déplacements en X et l'autre en Y

    Si oui comment je m'y prend? j'ai eu beau chercher je n'ai pas trouvé d'informations répondant précisément a ma question.

    Merci d'avance pour vos réponses!

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu cherches un truc dans ce style?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 23
    Par défaut
    C'est le genre de fonctionnalité que je veut. Par contre comme je n'ai pas d'éléments cliquables dans la fenetre (autre que les 2 scrollbars) et que je souhaite que ca le fasse avec un click gauche

    je me demandait si simplement étendre leur zone cliquable a l'intégralité de la fenetre ne serait pas plus simple. Je pensait a quelque chose comme écrire une classe qui herite de JScrollBar mais avec une zone cliquable plus grande.

    Après comme je le disait plus haut je ne connait pas vrement bien JAVA donc je suis peut être a coté de la plaque!

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Personnelement, j'ai du mal à comprendre ce que tu souhaites exactement..
    Déplacer au clic gauche un peu comme dans google map quand tu déplaces la carte ?

    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
    68
    69
    70
    71
    import java.awt.Dimension;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
     
     
    @SuppressWarnings("serial")
    public class Test extends JFrame implements MouseListener, MouseMotionListener{
    	private JPanel pan;
    	private JScrollPane scroller;
    	private int x1, y1, x, y;
     
    	public Test() {
    		pan = new JPanel();
    		pan.setPreferredSize(new Dimension(1000, 1000));
    		pan.addMouseListener(this);
    		pan.addMouseMotionListener(this);
     
    		scroller = new JScrollPane(pan);
     
    		add(scroller);
     
    		setSize(500, 500);
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	public static void main(String[] args) {
    		new Test().setVisible(true);
    	}
     
    	@Override
    	public void mouseClicked(MouseEvent e) {}
     
    	@Override
    	public void mouseEntered(MouseEvent e) {}
     
    	@Override
    	public void mouseExited(MouseEvent e) {}
     
    	@Override
    	public void mousePressed(MouseEvent e) {
    		x1 = e.getXOnScreen();
    		y1 = e.getYOnScreen();
    	}
     
    	@Override
    	public void mouseReleased(MouseEvent e) {
    	}
     
    	@Override
    	public void mouseDragged(MouseEvent e) {
    		x = e.getXOnScreen()-x1;
    		y = e.getYOnScreen()-y1;
     
    		scroller.getHorizontalScrollBar().setValue(scroller.getHorizontalScrollBar().getValue()-x);
    		scroller.getVerticalScrollBar().setValue(scroller.getVerticalScrollBar().getValue()-y);
     
    		scroller.validate();
     
    		x1 = e.getXOnScreen();
    		y1 = e.getYOnScreen();
    	}
     
    	@Override
    	public void mouseMoved(MouseEvent arg0) {}
    }

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    TU peux faire ça en mettant un MouseListener sur le viewport de ton JScrollPane, ou en passant par le JXLayer qui sert de base à la solution que j'ai donné au dessus.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 23
    Par défaut
    Mon applet affiche des images et je contrôle quelle image j'affiche a l'aide de mes 2 JScrollBar. ce que je voudrais faire c'est pouvoir changer d'image (donc changer la position d'un ou des deux scrollers) a l'aide de la souris en faisant un click n' drag.
    le soucis avec ta méthode (qui se règle si on se penche un peut dessus je te l'accorde mais je suis fainéant!!) c'est que mes scrollers ont des valeurs de début et de fin un peut particuliers a cause de contraintes extérieures (genre le scroller vertical est initialisé a 1 et va de -3 a 5) et que utiliser cette technique me force a gérer un pas différent sur les 2 scrollers en dessous duquel aucun événement ne doit se produire. J'avais vu sur un autre topic (j'essayerais de le retrouver demain et de mettre un lien) un type qui modifiait la taille de la zone cliquable d'un JSlider. je me suis donc dit que le plus simple pour moi était de faire la même chose pour mes scrollers, puisque la souris ne sert a rien d'autre dans l'applet.

    et puis maintenant ca a un peut piqué ma curiosité et j'aimerais bien voir si c'est vraiment possible!

    En gros ce que je voudrais faire (après si c'est pas possible je ferais avec les MouseListener et MouseMotionListener) c'est que en faisant un click 'n drag n'importe ou dans ma fenetre ca fasse comme si je déplaçait directement ma barre de scroll.

    Ce genre de trucs est possible non? sinon j'avais cru comprendre que les éléments de AWT étaient plus personnalisable que ceux de Swing est ce qu'en passant par la je pourrais y arriver? (sachant que j'ai deja presque tout écrit avec Swing donc ca m'arrangerait de ne pas avoir a recommencer!)

    edit:
    j'avais pa vu le message du dessus je me documenterait sur jxlayer demain!

Discussions similaires

  1. zone cliquable
    Par Mac__fly dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 25/06/2006, 02h02
  2. [FLASH MX] Zone cliquable
    Par david5 dans le forum Flash
    Réponses: 2
    Dernier message: 05/01/2006, 15h10
  3. [IMAGE]zone cliquable
    Par say dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/11/2005, 11h31
  4. [FLASH MX2004 ] Définir des "zones cliquables"
    Par chodaboy34 dans le forum Flash
    Réponses: 3
    Dernier message: 07/11/2004, 19h58
  5. Réponses: 3
    Dernier message: 16/08/2004, 11h57

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