Académique Documents
Professionnel Documents
Culture Documents
Conteneurs fenêtres.
14
15
16
Les Composants graphiques de Swing
Composants intermédiaires
• Utilisés pour organiser ou positionner d’autres
composants (de base)
– JPanel utilisé pour regrouper d’autres composants
– JScrollPane fournir une vue avec scroll bars
– JSplitPane divise en 2 composants
–…
Fenetre.java PremiereFenetre.java
import javax.swing.JFrame; public class PremiereFenetre {
public class Fenetre extends JFrame { public static void main(String[] args){
public Fenetre(){ JFrame f = new Fenetre();
this.setTitle("My first window"); f.setVisible(true);
this.setSize(600, 600); }
this.setLocationRelativeTo(null); }
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLO
SE);
}
}
La classe JFrame
Exemple
f.setBounds (10, 40, 300, 200) ;
// le coin supérieur gauche de la fenêtre
// est placé au pixel de coordonnées 10, 40
// et ses dimensions seront de 300 * 200 pixels
La classe JFrame
Exemple
f.setResizable(true);
f.setResizable(false);
La classe JFrame
L’objet JPanel
Nous allons utiliser un JPanel, composant de type conteneur dont la
vocation est d'accueillir d'autres objets de même type ou des objets de
type composant (boutons, cases à cocher…).
Voici les étapes à suivre :
1. Importer la classe javax.swing.JPanel dans notre classe héritée de
JFrame.
2. Instancier un JPanel puis lui spécifier une couleur de fond pour
mieux le distinguer.
3. Avertir notre JFrame que ce sera notre JPanel qui constituera son
ContentPane.
La classe JPanel
L’objet Jpanel
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Fenetre {
public void main(String args[]){
this.setTitle("My first window");
this.setSize(600, 600);
this.setLocationRelativeTo(null);// pour centrer la fenêtre
//Instanciation d'un objet JPanel
JPanel pan = new JPanel();
//Définition de sa couleur de fond
pan.setBackground(Color.ORANGE);
//On prévient notre JFrame que notre JPanel sera son ContentPane
this.setContentPane(pan);
this.setVisible(true);
}}
La classe JPanel
L’objet Jpanel
Exemple 2
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Fenetre extends JFrame {
public Fenetre(){
this.setTitle("My first window");
this.setSize(600, 600);
this.setLocationRelativeTo(null);
//Instanciation d'un objet JPanel
JPanel pan = new JPanel();
//On prévient notre JFrame que notre JPanel sera son ContentPane
getContentPane().add(pan) ;
//Définition de sa couleur de fond
pan.setBackground(Color.RED);
this.setVisible(true);
}
}
La classe JPanel
L’objet Jpanel
Exemple 3
import javax.swing.* ;
import java.awt.* ;
class MaFenetre extends JFrame{
public MaFenetre (){
setTitle ("Fenetre = panneau jaune") ;
setSize (300, 150) ;
pan = new JPanel() ;
pan.setBackground (Color.yellow) ;
getContentPane().add(pan) ;
}
private JPanel pan;
}
public class Paneau{
public static void main (String args[]){
MaFenetre fen = new MaFenetre() ;
fen.setVisible(true) ;
}
}
Gestion d’événement
Gestion d’un clic dans la fenêtre
La notion d’adaptateur
Java dispose d’une classe particulière MouseAdapter qui
implémente toutes les méthodes de l’interface MouseListener avec un
corps vide. Autrement dit, tout se passe comme si MouseAdapter était
définie ainsi :
class MouseAdapter implements MouseListener{
public void mouseClicked (MouseEvent ev) {}
public void mousePressed (MouseEvent ev) {}
public void mouseReleased(MouseEvent ev) {}
public void mouseEntered (MouseEvent ev) {}
public void mouseExited (MouseEvent ev) {}
}
Gestion d’un clic dans la fenêtre
La notion d’adaptateur
import javax.swing.* ;
import java.awt.event.* ;
class MaFenetre extends JFrame {
MaFenetre (){// constructeur
setTitle ("Gestion de clics") ; setBounds (10, 20, 300, 200) ;
addMouseListener (new EcouteurSouris());
}
class EcouteurSouris extends MouseAdapter{
public void mouseClicked(MouseEvent ev) {// méthode gérant un clic souris
int x = ev.getX() ; int y = ev.getY() ;
System.out.println ("clic au point de coordonnees " + x + ", " + y ) ;
}}}
public class Test{
public static void main (String args[]){
MaFenetre fen = new MaFenetre() ;
fen.setVisible(true) ;}}
Gestion d’un clic dans la fenêtre
La notion d’adaptateur
import javax.swing.* ;
import java.awt.event.* ;
class MaFenetre extends JFrame{
public MaFenetre (){// constructeur
setTitle ("Gestion de clics") ;
setBounds (10, 20, 300, 200) ;
addMouseListener( new MouseAdapter(){
public void mouseClicked(MouseEvent ev){
int x = ev.getX() ; int y = ev.getY() ;
System.out.println ("clic au point de coordonnées " + x + ", " + y ) ;}}
);
}}
public class Test{
public static void main (String args[]){
MaFenetre fen = new MaFenetre() ; fen.setVisible(true) ;
}}
Gestionnaires de placement (Layout
manager)
Les gestionnaires de placement (layout manager) permettent de
disposer des composants dans un panneau en fonction des
caractéristiques qui leurs sont propres, notamment leur preferredSize.
Remarque
Pour modifier par exemple la taille du composant du centre, on utilise
la méthode setPreferredSize():
FlowLayout
Les composants sont placés les uns à la suite des autres horizontalement,
en passant à la ligne suivante quand il n'y a plus de place sur la ligne.
Chaque composant a sa taille préférée. Le gestionnaire de placement
peut:
centrer les composants : FlowLayout.CENTER (par défaut)
aligner à gauche : FlowLayout.LEFT
aligner à droite : FlowLayout.RIGHT
leading : FlowLayout.LEADING les composants sont alignés à partir
du début du conteneur ( à gauche si le composant est orienté
ComponentOrientation.LEFT_TO_RIGHT et à droite si le composant
est orienté ComponentOrientation.RIGHT_TO_LEFT
Gestionnaires de placement (Layout
manager)
FlowLayout
Ou en abrégé :
La classe JButton
import javax.swing.* ; import java.awt.* ; import java.awt.event.* ;
class Fen1Bouton extends JFrame{
public Fen1Bouton (){
setTitle ("Premier bouton") ;
setSize (300, 200) ;
monBouton = new JButton ("ESSAI") ;
setLayout(new FlowLayout()) ;
getContentPane().add(monBouton) ;
}
private JButton monBouton ;
}
public class Test{
public static void main (String args[]){
Fen1Bouton fen = new Fen1Bouton() ;
fen.setVisible(true) ;
}
}
Boutons
if (case.isSelected()) .....
• Un champ de texte (on dit aussi une boîte de saisie) est une zone
rectangulaire (avec bordure) dans laquelle l’utilisateur peut entrer ou
modifier un texte (d’une seule ligne). Il s’obtient en instanciant un
objet de type JTextField.
• Exemples de constructions de champs de texte dans un objet de type
JFrame :
• JTextField texte1, texte2 ;
• texte1 = new JTextField (20) ; // champ de taille 20, initialement vide
• texte2 = new JTextField ("texte initial", 15) ; // champ de taille 15
// contenant au départ le texte :texte initial
• On peut connaître à tout moment l’information figurant dans un
champ de texte en utilisant la méthode getText(), par exemple :
• String ch = texte1.getText() ;
Les contrôles usuels: JTextField
Remarque
Lors de l’exécution on peut modifier la taille d’un champ de texte
avec la méthode setColumns().
Pour que la modification soit immédiatement prise en compte par le
layout Manager, il est nécessaire de lui appliquer la méthode
revalidate() (ou encore d’appliquer la méthode validate() à son
conteneur) :
texte1.setComumns (30) ; // on donne à texte1 une largeur de 30
texte1.revalidate() ; // ou encore, si le conteneur est de type JFrame :
// getContententPane().validate() ;
Les contrôles usuels: JTextField
Comme pour une boîte de liste, on peut forcer la sélection d’un élément
de rang donné par setSelectedIndex():
combo.setSelectedIndex (2) ; // sélection préalable de l’élément de rang 2
Les boîtes combo