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

AWT/Swing Java Discussion :

Zoom sur Component et MouseListener


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Par défaut Zoom sur Component et MouseListener
    Bonjour,

    Après avoir chercher à maintes reprises sur le net, Je m'en remets à vous car je n'ai plus beaucoup d'idées.
    Je suis entrain d'implémenter un système de Zoom In/Out sur un JLayeredPane. Jusque là pas de souci, j'utilise la méthodes scale pour redimensionner les JComponents affichés.

    Le problème situe dans le fait que ses JComponent possèdent des MouseListeners et que ces derniers ne sont pas soumis au scale.

    Dans le code ci-dessous j'ai réduis la taille de mon JPANEL de moitié et pour que le MouseListener print sa trace, il est nécessaire de cliquer à droite du carré rouge ...

    Auriez vous une idée pour que le MouseListener fonctionne correctement ?

    D'avance Merci !

    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
     
    package lib.test;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.geom.AffineTransform;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class ZoomPanelTest extends JPanel
    {
     
    	 public static void main(String[] args) 
    	 {
    	        JFrame frame = new JFrame("Zoom Panel");
    	        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
    	        ZoomPanelTest chart = new ZoomPanelTest();
    	        frame.setContentPane(chart);
    	        frame.setSize(new Dimension(600, 600));
    	        frame.setVisible(true);
    	 }
     
    	public ZoomPanelTest()
    	{
    		super();
    		this.setLayout(new FlowLayout());
    		init();		
    	}
     
    	private void init()
    	{
    		JPanel panel = new JPanel();
    		panel.setPreferredSize(new Dimension (100, 100));
    		panel.setSize(new Dimension (100, 100));
    		panel.setLocation(10, 10);
    		panel.setBackground(Color.RED);
    		panel.addMouseListener(new MouseAdapter()		
    		{
     
    			public void mouseReleased(MouseEvent e)
    			{
    				System.out.println("position: "+e.getPoint());
    			}
     
    			});
     
     
    		this.add(panel);
    	}
     
    	protected void paintChildren(Graphics g)
    	{
    		Graphics2D g2 = (Graphics2D) g;
    		AffineTransform old= g2.getTransform();
    		double zoom = 0.5;
     
    		 AffineTransform  tr = AffineTransform.getScaleInstance(zoom,zoom);
    		 g2.setTransform(tr);
             super.paintChildren(g);
             g2.setTransform(old);
    	}	
    }

  2. #2
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    getLocationOnScreen() ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Par défaut
    Euh oui pourquoi pas. mais où dois-je l'utiliser ?

  4. #4
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Un truc dans ce genre peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x = bord gauche du panel, y bord haut du panel, l = largeur du panel, h = hauteur du panel
     
    public void mouseReleased(MouseEvent e) {
         sourisX = e.getPoint()getX());
         sourisY = e.getPoint()getY());
         if ((sourisX > x) && (souriX < x+l) && (sourisY > y) && (souriY < y+h))  le   curseur est à l'intérieur du panel 
    }
    .. un poil lourdingue, quoi, mais ça marche.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Le problème de ton zoom est qu'il ne zoom que l'image mais pas les coordonnée qui ont servit au zoom.

    Essaye de voir si au lieu de redimensionner l'image (via scale), tu redimensionne les coordonnée des items (leur position + leur taille).

Discussions similaires

  1. Zoom sur Tchart
    Par c@pu dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/07/2005, 15h21
  2. [DirectX9] Plein écran et zoom sur texture
    Par SteelBox dans le forum DirectX
    Réponses: 10
    Dernier message: 21/03/2005, 23h26
  3. Zoom sur une image
    Par AurelBUD dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/05/2004, 17h05
  4. zoom sur image de formulaire
    Par bourvil dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2003, 09h25
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40

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