Nous avons donc vu successivement trois des principaux gestionnaires
d'interface de Java : FlowLayout,
GridLayout
et BorderLayout (il en existe deux autres au sein d'AWT,
CardLayout et GridBagLayout). Relativement
simples à appliquer, ils montrent aussi rapidement
leurs limites dès que l'on veut construire une interface
plus complexe. Rares sont les applications ne se servant que
d'un type de gestionnaire.
Ce problème
n'en est pas un car Java a tout prévu : il est possible
de combiner plusieurs gestionnaires au sein d'une même
interface, en ajoutant des conteneurs JPanel
à un conteneur principal.
Plus clairement, nous allons imbriquer les gestionnaires. Par exemple, un GridLayout
de 2*3 peut contenir six composants graphiques, ou tout autant
de gestionnaires. Pareillement, un BorderLayout
peut répartir cinq gestionnaires...
Dans notre exemple, le gestionnaire "de base" est
un BorderLayout, au sein duquel
nous imbriquons un GridLayout,
un FlowLayout et quelques
composants graphiques, pour obtenir ceci :
import javax.swing.*;
import java.awt.*;
public class Multi
{
public static void main(String[] args)
{
JFrame myFrame = new JFrame();
JPanel panelDroite = new JPanel();
panelDroite.setLayout(new GridLayout(2,3));
panelDroite.add(new Button("1"));
panelDroite.add(new Button("2"));
panelDroite.add(new Button("3"));
panelDroite.add(new Button("4"));
panelDroite.add(new Button("5"));
panelDroite.add(new Button("6"));
JPanel panelBas = new JPanel();
panelBas.add(new JCheckBox("Métro"));
panelBas.add(new JCheckBox("Boulot"));
panelBas.add(new JCheckBox("Dodo"));
JPanel panelPrincipal = new JPanel();
panelPrincipal.setLayout(new BorderLayout());
panelPrincipal.add(new JLabel("Quel
étage ?"), BorderLayout.WEST);
panelPrincipal.add(panelBas,
BorderLayout.SOUTH);
panelPrincipal.add(panelDroite,
BorderLayout.CENTER);
myFrame.setContentPane(panelPrincipal);
myFrame.setTitle("Where do we go from
here ?");
myFrame.setBounds(100,100,300,200);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
}
}
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Après avoir créé le cadre principal, nous
créons trois panels (panelDroite,
panelBas et panelPrincipal).
Dans ce dernier, nous indiquons un des deux premiers dans un
emplacement normalement occupé par un composants graphique
(indiqué en gras). Ceci fait, ce panel principal est
attaché au cadre, et nous définissons quelques
détails cosmétiques.
|