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 :

Probleme de zoom avec scrollpane


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Points : 165
    Points
    165
    Par défaut Probleme de zoom avec scrollpane
    Bonjour
    J'ai un ptit problème avec mon ptit appli de visualisation d'image, j'ai 2 fonction zoomIn zoomOut qui marche très bien mai slorsque je met ca dans un scrollpane ca merdouille.
    Je vous met en piece jointe l'appli pour voir la saccade.
    Et je vous met le code source.

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseWheelEvent;
    import java.awt.event.MouseWheelListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
     
    public class Viewer extends JPanel {
    	private static final long serialVersionUID = 1L;
    	private Image image;
    	private int imageWidth, imageHeight, iw, ih, image_x, image_y;
    	private double factor = 1;
    	private Dimension area;
    	public static JScrollPane scrollpane;
     
    	public Viewer() {
    		scrollpane = new JScrollPane(this);
    		scrollpane.getViewport().addMouseListener(new MouseAdapter() {
    			public void mouseClicked(MouseEvent e) {
     
    			}
    		});
    		scrollpane.getViewport().addMouseWheelListener(
    				new MouseWheelListener() {
    					public void mouseWheelMoved(MouseWheelEvent e) {
    						int rot = e.getWheelRotation();
    						if (rot < 0) {
    							zoomIn();
    							if (Jview.clientState == true) {
    								Jview.client.sendCommand(Jview.cmd.zoomIn);
    							}
    						} else {
    							zoomOut();
    							if (Jview.clientState == true) {
    								Jview.client.sendCommand(Jview.cmd.zoomOut);
    							}
    						}
    					}
    				});
    		area = new Dimension(0, 0);
    	}
     
    	public void setPix(String file) {
    		image = new ImageIcon(file).getImage();
    		imageWidth = image.getWidth(this);
    		imageHeight = image.getHeight(this);
    		area.width = imageWidth;
    		area.height = imageHeight;
    		setPreferredSize(area);
    		factor = 1;
    		revalidate();
    		repaint();
    	}
     
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if (image != null) {
    			iw = (int) (image.getWidth(this) * (factor));
    			ih = (int) (image.getHeight(this) * (factor));
    			image_x = (getWidth() - iw) / 2;
    			image_y = (getHeight() - ih) / 2;
    			g.drawImage(image, image_x, image_y, iw, ih, this);
     
    			g.dispose();
    			// g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
    			// RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    			area.width = iw;
    			area.height = ih;
    			setPreferredSize(area);
    			setMinimumSize(area);
    			setMaximumSize(area);
    		}
    	}
     
    	public void zoomIn() {
    		factor += 0.05;
    		updateUI();
    	}
     
    	public void zoomOut() {
    		if (factor > 0.01) {
    			factor -= 0.05;
    		}
    		updateUI();
    	}
     
    	public void originalSize() {
    		factor = 1;
    		revalidate();
    		repaint();
    	}
    }
    Si possible si vous pouviez me dire mes erreurs de codage, ce qu'il va pas surtout.
    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Points : 165
    Points
    165
    Par défaut
    Je fais un ptit UP.
    Se pourrait t il qu'il y'a un probleme avec le composant JScrollpane ? Parce que sans le jScrollpane ca marche impec.

    Merci

  3. #3
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Je n'ai pas executer ton code, mais j'ai juste vu que tu avais associé ton zoom à la molette de la souris et que tu parlais d'une sacade lors du zoom lorsque tu utilises un JScrollPane...

    Ne se pourrait t-il pas que ta sacade soit dû au fait que le JScrollPane intercepte les evenements envoyés par la molette de la souris pour deplacer la scroll-barre ?

    J'espère que ca t'aidera.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Points : 165
    Points
    165
    Par défaut
    Deja je te remerci d'avoir répondu.

    Je pense pas que cela vienne du MouseWheelListener, d'ailleurs je l'ai redéini et cela ne change rien. De plus lorsque j'utilise le wheel la barre vertical du scrollpane ne bouge pas vers le bas.
    Execute l'appli pour voir vraiment ce que ca fait.

    Merci encore

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Points : 165
    Points
    165
    Par défaut
    Bon mon dernier UP, après je l'enlève pour de bon ce scrollpane.
    Merci

Discussions similaires

  1. probleme avec le zoom avec une modification d'image
    Par yoyo59650 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/02/2006, 09h22
  2. [Kylix] Probleme de séparateur avec Kylix2 ?
    Par jeanphy dans le forum EDI
    Réponses: 4
    Dernier message: 10/02/2003, 16h41
  3. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Zoom avec du TJPEG
    Par Thylia dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2002, 16h03

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