précédent | suivant | table des matières

JScrollPane

Sommaire
  1. Constructeurs
  2. Méthodes
  3. Interface Scrollable
JScrollPane

(Démonstration)

JScrollPane est un conteneur permettant de munir un composant de barres de défilement. Ceci permet de visualiser des composants plus grands que l'espace dans lequel ils sont visualisés. Le composant  scrollé doit implémenter l'interface Scrollable. Les JScrollBars sont munies d'une stratégie d'affichage qui peut être : 

1Constructeurs

JScrollPane()
Crée un JScrollPane sans composant vue, avec des politique horizontale et verticale AS_NEEDED
JScrollPane(Component vue )
Crée un JScrollPane avec composant vue, avec des politique horizontale et verticale AS_NEEDED
JScrollPane(Component vue, 
	    int vPolitique, int hPolitique) 
Crée un JScrollPane avec composant vue, une politique horizontale et une politique verticale
JScrollPane(int vPolitique, int hPolitique)
Crée un JScrollPane sans composant vue, mais avec une politique horizontale et une politique verticale 

2Méthodes

void setViewPortView( Component c)
Affecte le composant Scrollable à visualiser.
void setVerticalScrollBarPolicy(int p)
Affecte la stratègie d'affichage de la ScrollBar verticale.
int getVerticalScrollBarPolicy()
void setHorizontalScrollBarPolicy( int p)
Affecte la stratègie d'affichage de la ScrollBar verticale.
int getHorizontalScrollBarPolicy()
 
void setWheelScrollingEnabled(boolean b)
 Si b vaut true on peut scroller verticalement le composant avec la roulette de la souris.
boolean isWheelScrollingEnabled()

On peut ajouter un en-tête de colonnes ou un en-tête de lignes, ainsi que des coins :

void setColumnHeaderView (Component c)
Affecte un composant comme en-tête de colonnes.
void setRowHeaderView (Component c)
Affecete un composant comme en-tête de lignes.
void setCorner(String s, Component c)
Affecte un composant comme coin, la chaîne de caractères vaut :
  • JScrollPane.UPPER_LEFT_CORNER pour le coin haut gauche.
  • JScrollPane.UPPER_RIGHT_CORNER pour le coin haut droit.
  • JScrollPane.LOWER_LEFT_CORNER pour le coin bas gauche.
  • JScrollPane.LOWER_RIGHT_CORNER pour le coin bas droit.
Component getCorner(String s)
Retourne le composant affecté au coin en paramètre.

3Interface Scrollable

Un composant qui implémente l'interface Scrollable doit définir les méthodes suivantes :

Dimension getPreferredScrollableViewportSize()
int getScrollableUnitIncrement(
	      Rectangle visibleRect, 
          int orientation, int direction)
Retourne la taille de l'incrément unitaire : clic sur la flèche dans la barre de défilement.
  • visibleRect est le rectangle actuellement visible.
  • orientation vaut SwingConstants.HORIZONTAL si le clic se fait sur la ScrollBar horizontale, et SwingConstants.VERTICAL si le clic se fait sur la ScrollBar verticale.
  • direction
    • <0 gauche ou haut
    • >0 droit ou bas
int getScrollableBlockIncrement(
	      Rectangle visibleRect, 
          int orientation, int direction)
Retourne la taille de l'incrément bloc : clic sur l'espace libre dans  la barre de défilement.
boolean getScrollableTracksViewportWidth()
Force le composant a une taille horizontale adaptée au JScrollPane, si ça retourne true.
boolean getScrollableTracksViewportHeight() 
Force le composant a une taille vertiacle adaptée au JScrollPane, si ça retourne true.

Exemple :

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

public int getScrollableUnitIncrement(Rectangle visibleRect,
   int orientation, int direction) {
   return 10;
}

public int getScrollableBlockIncrement(Rectangle visibleRect,
   int orientation, int direction) {
   return (orientation == SwingConstants.VERTICAL) 
      ? visibleRect.height
      : visibleRect.width;
}

public boolean getScrollableTracksViewportWidth() {
   if (getParent() instanceof JViewport) {
      return 
       (((JViewport) getParent()).getWidth() > getPreferredSize().width);
   }
   return false;
}

public boolean getScrollableTracksViewportHeight() {
   if (getParent() instanceof JViewport) {
      return 
       (((JViewport) getParent()).getHeight() > getPreferredSize().height);
   }
   return false;
}

haut de la page