Cours java gestionnaires de géométrie

Sommaire: Java gestionnaires de géométrie

La « géométrie »
FlowLayout
BorderLayout
GridLayout
BoxLayout
GridBagLayout
CardLayout

♣ Extrait du cours

La géométrie

« Les tailles « idéale », maximale et minimale sont retournées par getPreferredSize() getMaximalSize() getMinimalSize()
« Les gestionnaires de géométrie utilisent ces informations pour placer les filles dans un conteneur.
« Tout composant a unplacementdans sa mère, donné par sonorigineet sesdimensions
« Le rectangleest géré par
Rectangle getBounds()resp.setBounds(…)
« La position(origine) est gérée par
Point getLocation()resp.setLocation(..)
« Lataille(uneDimension)gérée par getSize()resp.
setSize(…)

Vue d’ensemble

« Gestionnaires les plus courants:
#FlowLayout
#BorderLayout
#GridLayout
#BoxLayout
« Choix par conteneur.setLayout(new XyzLayout())
« Plus subtil
GridBagLayout
« Dépassé
CardLayout

FlowLayout

« FlowLayout est le gestionnaire par défaut des appletteset desPanel.
Mais JAppleta le gestionnaire BorderLayout!
« affiche les composantsde la gauche vers la droite, et passe à la ligne s’il n’y a plus de place.
« après retaille, la disposition est recalculée.
FlowLayout(int align, int hgap, int vgap)
FlowLayout(int align)
FlowLayout()
« alignvautLEFT, CENTER(défaut) ouRIGHT, LEADING,
TRAILING(par rapport à l’orientation) et indique comment chaque ligne est remplie.
« hgap(= 5) etvgap(=5) sont les espaces entre composants.
« les marges sont régies par le membreinsetsdu conteneur.
Changer les paramètres
« Les paramètres s’obtiennent et se modifient par des méthodes set et get.
« Le changement ne prend effet
#qu’après retaille,
#ou en forçant parlayoutContainer().
#ou en demandant une validation par revalidate().
Exemple
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public classTestFlowLayoutextends JApplet {
JButton gauche = new JButton (« Gauche »);
JButton centre = new JButton (« Centre »);
JButton droit = new JButton (« Droit »);
JButton espV = new JButton (« Vertical »);
JButton espH = new JButton (« Horizontal »);
JPanel contentPane = (JPanel) getContentPane();
public voidinit(){
contentPane.setLayout(new FlowLayout());
contentPane.add(gauche);
contentPane.add(centre);
contentPane.add(droit);
contentPane.add(espV);
contentPane.add(espH);
gauche.addActionListener(newAligneur(FlowLayout.LEFT));
centre.addActionListener(newAligneur(FlowLayout.CENTER));
droit.addActionListener(newAligneur(FlowLayout.RIGHT));
espV.addActionListener(newEspaceur(1));
espH.addActionListener(newEspaceur(-1));
}
Exemple (suite)

classAligneur implements ActionListener {
int sens;
Aligneur(int s) {sens = s;}
public void actionPerformed(ActionEvent e){
FlowLayout f = (FlowLayout)contentPane.getLayout();
f.setAlignment(sens);
contentPane.revalidate();
}
} // Aligneur
classEspaceur implements ActionListener {
int dir;
Espaceur(int d) {dir = d;}
public void actionPerformed(ActionEvent e){
FlowLayout f = (FlowLayout)contentPane.getLayout();
if (dir == 1)
f.setVgap(f.getVgap() + 5);
else
f.setHgap(f.getHgap() + 5);
contentPane.revalidate();
}
} // Espaceur
} // TestFlowLayout
BorderLayout
« divise ses composants en 5 régions :nord, sud, ouest, est, etcentre.
«  »nord » et « sud » occupent toute la largeur,
«  »ouest » et « est » occupentla hauteur qui reste,
«  »centre » occupe la place restante.
« On utilise la constante correspondante de BorderLayout.
import java.awt.*;
import java.applet.Applet;
public class ActionEx extends Applet {
public void init() {
setLayout(new BorderLayout());
add(new Button(« 1 »),BorderLayout.NORTH);
add(new Button(« 2 »),BorderLayout.NORTH);
add(new Button(« 3 »),BorderLayout.NORTH);
add(« South »,new Button(« 4 »)); // old
add(new Button(« 5 »),BorderLayout.NORTH);
add(new Button(« 6 »),BorderLayout.CENTER);
}
}
Taille
#pack(): les conteneurs prennent la taille minimalepour contenir leur composants, en fonction de la taille préféréedes composants.
#Pour suggérer ou imposer une autre taille, on retaille par
setSize(largeur, hauteur)
setPreferredSize(dimension)
#Ou encore, on réécrit la méthode getPreferredSize(),par
exemple
public Dimension getPreferredSize() {
return new Dimension(100,150);
}
#Nécessaire pour unCanvas, dont la taille est nullepar défaut.
Marges
#Les marges sont entre les bords et les filles.
#L’ensemble des marges est de la classeInsets:
$quatre champs
$constructeur
Insets(top, left, bottom, right)
#Les marges comprennent le bord, et pour Frame, aussi la barre de titre !
#Pour changer de marges, on redéfinit la méthode
getInsets()

………..

Cours pdf

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *