• Aucun résultat trouvé

C. Recanati Java Graphique AIR2, 2015 Feuille de TP n° 4

N/A
N/A
Protected

Academic year: 2022

Partager "C. Recanati Java Graphique AIR2, 2015 Feuille de TP n° 4"

Copied!
3
0
0

Texte intégral

(1)

C. Recanati Java Graphique AIR2, 2015

Feuille de TP n° 4

Exercice 1 : On veut tester l’afficheur GridBagLayout. Vous trouverez (en correction à la fin du sujet) le programme

correspondant à l’affichage des 7 boutons de la fenêtre ci-dessous.

Pour gagner du temps, vous pouvez chercher simplement ici à programmer le positionnement des 6 boutons n° 1, 2, 3, 5 , 6 et 7 (i.e.

vous ignorez le bouton 4 sur la 3

ème

ligne de la figure – et vous placerez ceux des lignes 1, 2 et 4).

Disposition : Le premier bouton sera agrandi verticalement pour avoir une hauteur de 40 pixels (cf. l’attribut ipady). Sur la dernière rangée, les boutons occupent chacun une cellule et remplissent uniformément l’espace en largeur en cas de changement de taille (leur affecter un même poids, par exemple 0.5 en weightx).

Note sur le sujet complet : le bouton 4 est positionné en bas de sa cellule (cf. l’attribut anchor) et laisse un espace de 10 pixels au dessus de lui (attribut insets). On peut aussi faire en sorte qu’il absorbe tout l’espace vertical disponible quand on agrandit la fenêtre (avec un weighty de 1.0).

Indications de correction : import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class GridBagWindow extends JFrame { boolean inAnApplet = true;

final boolean shouldFill = true;

final boolean shouldWeightX = true;

(2)

public GridBagWindow () { JButton button;

Container contentPane = getContentPane();

GridBagLayout gridbag = new GridBagLayout();

GridBagConstraints c = new GridBagConstraints();

contentPane.setLayout(gridbag);

if (shouldFill) {

// hauteur naturelle, largeur maximum c.fill = GridBagConstraints.HORIZONTAL;

}

button = new JButton("Bouton 1");

c.ipady = 40; // hauteur de 40 s'il est plus petit c.gridx = 0;

c.gridy = 0;

c.gridwidth = 3; // toute la largeur car 3 colonnes gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("2");

c.ipady = 0; // remise a zero c.gridwidth = 1; // remise au defaut c.gridx = 0;

c.gridy = 1;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("3");

c.gridx = 2;

c.gridy = 1;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("Bouton 4");

c.weighty = 1.0 ; // tout l'espace vert. suppl c.gridwidth = 2; // occupe deux colonnes c.gridx = 1;

c.gridy = 2;

c.insets = new Insets(10,0,0,0); //top padding c.anchor = GridBagConstraints.SOUTH; // en bas gridbag.setConstraints(button, c);

contentPane.add(button);

if (shouldWeightX) {

c.weightx = 0.5; // le meme pour les 3 boutons // => meme taille

}

button = new JButton("5");

c.gridx = 0;

c.gridy = 3;

c.gridwidth = 1; // occupe une seule colonne

(3)

c.insets = new Insets(0,0,0,0); //pas de padding gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("Bouton 6");

c.gridx = 1;

c.gridy = 3;

gridbag.setConstraints(button, c);

contentPane.add(button);

button = new JButton("7");

c.gridx = 2;

c.gridy = 3;

gridbag.setConstraints(button, c);

contentPane.add(button);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { if (inAnApplet) {

dispose();

} else {

System.exit(0);

} } });

}

public static void main(String args[]) {

GridBagWindow window = new GridBagWindow();

window.inAnApplet = false;

window.setTitle("GridBagLayout");

window.pack();

window.setVisible(true);

}

}

Références

Documents relatifs

création interactive d’un nouvel élément, puis son ajout au modèle à la fin de l’interaction de l’utilisateur avec la souris.. Cette « vue » (ici constituée d’un

souris, suivi ensuite d’un déplacement de souris bouton enfoncé (un drag), suivi ensuite (pour terminer le dessin d’un relâchement du bouton de la souris, est la

On écrira une procédure privée initializeSelectionMode() qui initialisera l’item sélectionné de la comboBox conformément au mode de sélection initial de la liste, et on

de même taille ainsi que le GridBagLayout qui servira de gestionnaire.. d’affichage au dernier argument de type conteneur destiné à contenir les labels et les

1) Version applet. La classe de l’application étend JApplet et implémente ActionListener. On déclarera le nombre d’animations, un booléen pour savoir

a) un constructeur avec deux arguments permettant de définir le titre de la fenêtre et le mode d’affichage des points. Vous supposerez d’abord que l'entier passé en paramètre

- croix : les points seront dessinés sous forme de croix ; - poly : le polygone joignant les points sera dessiné ; 1) Ecrire une interface définissant les constantes pour le mode

- croix : les points seront dessinés sous forme de croix ; - poly : le polygone joignant les points sera dessiné ; 1) Ecrire une interface définissant les constantes pour le mode