[Associer un Jscrollbar à un Jpanel]

info3 Messages postés 7 Statut Membre -  
kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   -
slt , svp je suis bloqué , je cherche une methode qui permet d'associer un jscrollball à un jpanel ,contenant un composant graphique, sans que ce composant s'efface .
et merci d'avance pour votre collaboration..

1 réponse

  1. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    Inspire toi donc de ça : ca permet de rendre une image "scrollée", pour ce g juste taper sur google : API JAVA puis afficher les classes de javax.swing et la je suis tomber sur JScrollPane et dans la page cetrale sur 'how to use Scroll pane'. Pas compliqué si on a un minimum de base en Anglais. J'ai lu vite fais et à mon avis, même si ce que tu as dessous n'est pas tout à fait ce que tu souhaite, tu trouvera ton bonheur au même endroit !

    Bonne chance @++.

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.*;

    /* ScrollablePicture.java is used by ScrollDemo.java. */

    public class ScrollablePicture extends JLabel
    implements Scrollable,
    MouseMotionListener {

    private int maxUnitIncrement = 1;
    private boolean missingPicture = false;

    public ScrollablePicture(ImageIcon i, int m) {
    super(i);
    if (i == null) {
    missingPicture = true;
    setText("No picture found.");
    setHorizontalAlignment(CENTER);
    setOpaque(true);
    setBackground(Color.white);
    }
    maxUnitIncrement = m;

    //Let the user scroll by dragging to outside the window.
    setAutoscrolls(true); //enable synthetic drag events
    addMouseMotionListener(this); //handle mouse drags
    }

    //Methods required by the MouseMotionListener interface:
    public void mouseMoved(MouseEvent e) { }
    public void mouseDragged(MouseEvent e) {
    //The user is dragging us, so scroll!
    Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
    scrollRectToVisible(r);
    }

    public Dimension getPreferredSize() {
    if (missingPicture) {
    return new Dimension(320, 480);
    } else {
    return super.getPreferredSize();
    }
    }

    public Dimension getPreferredScrollableViewportSize() {
    return getPreferredSize();
    }

    public int getScrollableUnitIncrement(Rectangle visibleRect,
    int orientation,
    int direction) {
    //Get the current position.
    int currentPosition = 0;
    if (orientation == SwingConstants.HORIZONTAL) {
    currentPosition = visibleRect.x;
    } else {
    currentPosition = visibleRect.y;
    }

    //Return the number of pixels between currentPosition
    //and the nearest tick mark in the indicated direction.
    if (direction < 0) {
    int newPosition = currentPosition -
    (currentPosition / maxUnitIncrement)
    * maxUnitIncrement;
    return (newPosition == 0) ? maxUnitIncrement : newPosition;
    } else {
    return ((currentPosition / maxUnitIncrement) + 1)
    * maxUnitIncrement
    - currentPosition;
    }
    }

    public int getScrollableBlockIncrement(Rectangle visibleRect,
    int orientation,
    int direction) {
    if (orientation == SwingConstants.HORIZONTAL) {
    return visibleRect.width - maxUnitIncrement;
    } else {
    return visibleRect.height - maxUnitIncrement;
    }
    }

    public boolean getScrollableTracksViewportWidth() {
    return false;
    }

    public boolean getScrollableTracksViewportHeight() {
    return false;
    }

    public void setMaxUnitIncrement(int pixels) {
    maxUnitIncrement = pixels;
    }
    }
    0