Espacer les composants

La méthode getInsets

Par défaut, les composants s'insèrent dans tout l'espace offert par leur conteneur. Il est possible de définir des marges sur les quatre bords en utilisant la méthode getInsets qui renvoie un objet de type Insets qui a quatre champs : top, left, bottom et right. Le constructeur des objets de type Insets attend en paramètre les valeurs entières à attribuer à ces champs.

Ainsi, pour que les composants s'insèrent, par exemple dans une applet, en respectant une marge de 4 pixels sur les bords, on ajoutera la méthode suivante :

	public Insets getInsets() {
	 return new Insets(4,4,4,4);
	} 

Espace entre les composants

La plupart des gestionnaires de positionnement admettent des constructeurs qui permettent de définir l'espace horizontal et l'espace vertical qui séparent les composants. Ces deux paramètres sont donnés en dernière place.

Par exemple, pour un gestionnaire de positionnement de type BorderLayout, on imposera un espacement de 4 pixels dans les deux sens en utilisant le code :

	BorderLayout bl=new BorderLayout(4,4);

Pour un gestionnaire de positionnement de type GridLayout qui définit une grille de 4 lignes et 2 colonnes, on écrira:

	GridLayout gl=new GridLayout(4,2,4,4);

Un exemple

On désire construire une applet contenant une zone de saisie et des boutons représentant les 10 chiffres.

Version 1

L'applet se décompose en deux parties : la zone de saisie et l'ensemble des boutons. On peut donc utiliser un gestionnaire de positionnement de type BorderLayout avec la zone de saisie au nord et les boutons au centre.

Pour regrouper les boutons dans un même ensemble on utilise un composant de type Panel qui est un dérivé de Container et dont le rôle est donc de contenir d'autres composants. Dans ce Panel, les boutons forment une grille de deux lignes et de cinq colonnes. On utilisera donc un gestionnaire de type GridLayout pour définir cette grille.

Ceci nous donne le code suivant :

	import java.awt.*;
	import java.applet.*;
	import java.awt.event.*;

	public class Calcul1 extends Applet {
	  TextField saisie;

	  public void init() {
	   setLayout(new BorderLayout());
	   saisie=new TextField(10);
	   Panel bas =new Panel();
	   bas.setLayout(new GridLayout(2,5));
	   ajouteBouton("0",bas);
	   ajouteBouton("1",bas);
	   ajouteBouton("2",bas);
	   ajouteBouton("3",bas);
	   ajouteBouton("4",bas);
	   ajouteBouton("5",bas);
	   ajouteBouton("6",bas);
	   ajouteBouton("7",bas);
	   ajouteBouton("8",bas);
	   ajouteBouton("9",bas);
	   add("North",saisie);
	   add("Center",bas);
  
	  }
  
	 void ajouteBouton(String S, Panel p) {
	  Button but=new Button(S);
	  p.add(but);
	 }
 
	}

Nous avons créé une méthode ajouteBouton pour regrouper les opérations de création et d'insertion des boutons.

Le résultat obtenu est bien celui attendu, mais les composants sont collés les uns aux autres.

Version 2

Introduisons la méthode getInsets pour obtenir une marge de 10 pixels sur les bords.

	public Insets getInsets() {
	 return new Insets(10,10,10,10);
	}

Le résultat obtenu a bien une marge, mais les composants sont toujours collés les uns aux autres.

Version 3

Utilisons les constructeurs de gestionnaires de positionnement générant des espaces.

Pour le gestionnaire de type BorderLayout de l'applet, écrivons :

	setLayout(new BorderLayout(0,5));

Pour le gestionnaire de type GridLayout du composant Panel contenant les boutons, écrivons :

	bas.setLayout(new GridLayout(2,5,5,5));

On obtient alors le résultat attendu.



Retour au menu