0% ont trouvé ce document utile (0 vote)
46 vues40 pages

Swing

Le document traite de la création d'interfaces graphiques en Java Swing, en expliquant la structure des classes pour les fenêtres (JFrame, JDialog, JWindow) et la gestion des threads. Il aborde également les concepts de composants, conteneurs et gestionnaires de présentation, ainsi que l'utilisation de JLabel pour afficher du texte et des images. Enfin, il couvre les événements, les écouteurs, et les boîtes de dialogue prédéfinies pour interagir avec l'utilisateur.

Transféré par

dybesr
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues40 pages

Swing

Le document traite de la création d'interfaces graphiques en Java Swing, en expliquant la structure des classes pour les fenêtres (JFrame, JDialog, JWindow) et la gestion des threads. Il aborde également les concepts de composants, conteneurs et gestionnaires de présentation, ainsi que l'utilisation de JLabel pour afficher du texte et des images. Enfin, il couvre les événements, les écouteurs, et les boîtes de dialogue prédéfinies pour interagir avec l'utilisateur.

Transféré par

dybesr
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

• Structure d'une classe pour une fenêtre et distinction entre JFrame, JDialog, JWindow.

• Gestion du Thread Swing.


• Concepts généraux :
• Composant
• Conteneur
• Gestionnaire de présentation
• Gestionnaires de présentation :
• Principes généraux
• Détails sur BorderLayout, FlowLayout et BoxLayout
• Imbrication de conteneurs
• JLabel : ajout de texte ou d'images dans une fenêtre.
Tu veux des explications sur un point précis ou un complément d'information ?
4o

1. Structure générale d’une classe décrivant une fenêtre


Distinction entre JFrame, JDialog, et JWindow
• JFrame : Fenêtre principale d'une application Swing avec une barre de titre, des boutons
(fermer, réduire, agrandir).
• JDialog : Fenêtre secondaire utilisée pour afficher des dialogues (ex. boîte de
confirmation).
• JWindow : Fenêtre sans bordure ni boutons (utilisée pour des splash screens par exemple).

Exemple d'une fenêtre avec JFrame


java
CopierModifier
import [Link].*;

public class Fenetre extends JFrame {


public Fenetre() {
setTitle("Ma Fenêtre Swing");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null); // Centre la fenêtre
}

public static void main(String[] args) {


[Link](() -> {
new Fenetre().setVisible(true);
});
}
}

2. Prise en compte du Thread « Swing »


Swing fonctionne avec un thread d’interface graphique qui doit être manipulé correctement pour
éviter des bugs d'affichage.

Mauvaise pratique (problèmes possibles)


java
CopierModifier
public static void main(String[] args) {
new Fenetre().setVisible(true); // Mauvais, peut causer des problèmes
}

Bonne pratique avec [Link]


java
CopierModifier
public static void main(String[] args) {
[Link](() -> {
new Fenetre().setVisible(true); // Correct, exécuté dans le thread Swing
});
}

Cela permet d’exécuter le code dans le bon thread graphique et garantit un affichage fluide.

3. Concepts généraux
Composant (JComponent)
Un composant est un élément graphique (bouton, texte, champ de saisie, etc.).
Exemple : Ajouter un bouton (JButton) dans une fenêtre.
java
CopierModifier
JButton bouton = new JButton("Clique-moi");
add(bouton); // Ajoute le bouton à la fenêtre

Conteneur (Container)
Un conteneur est un élément capable de contenir d’autres composants. JFrame en est un exemple.

Exemple : Ajouter plusieurs composants à un conteneur.


java
CopierModifier
JPanel panel = new JPanel(); // Conteneur
[Link](new JButton("OK"));
[Link](new JButton("Annuler"));
add(panel);

Gestionnaire de présentation (LayoutManager)


Il organise l'affichage des composants dans un conteneur.
Exemple avec FlowLayout :
java
CopierModifier
setLayout(new FlowLayout()); // Les éléments s'ajoutent en ligne
add(new JButton("Bouton 1"));
add(new JButton("Bouton 2"));

4. Gestionnaires de présentation
Il existe plusieurs gestionnaires de disposition pour organiser les composants.

FlowLayout (disposition en ligne)


java
CopierModifier
setLayout(new FlowLayout()); // Ajoute les composants horizontalement
add(new JButton("Bouton A"));
add(new JButton("Bouton B"));

BorderLayout (disposition en 5 zones)


java
CopierModifier
setLayout(new BorderLayout());
add(new JButton("Nord"), [Link]);
add(new JButton("Centre"), [Link]);
add(new JButton("Sud"), [Link]);

BoxLayout (empilement vertical ou horizontal)


java
CopierModifier
JPanel panel = new JPanel();
[Link](new BoxLayout(panel, BoxLayout.Y_AXIS)); // Disposition
verticale
[Link](new JButton("Bouton 1"));
[Link](new JButton("Bouton 2"));
add(panel);

Principe de l’imbrication des conteneurs


On peut combiner plusieurs conteneurs pour des interfaces plus complexes.
java
CopierModifier
JPanel panelHaut = new JPanel(new FlowLayout());
[Link](new JButton("Haut 1"));
[Link](new JButton("Haut 2"));

JPanel panelBas = new JPanel(new BorderLayout());


[Link](new JButton("Bas"), [Link]);

setLayout(new BorderLayout());
add(panelHaut, [Link]);
add(panelBas, [Link]);

5. JLabel : insertion d’un texte statique ou d’une image


Ajouter un texte
java
CopierModifier
JLabel label = new JLabel("Bonjour, ceci est un JLabel !");
add(label);

Ajouter une image


java
CopierModifier
ImageIcon icon = new ImageIcon("[Link]"); // Image du disque
JLabel label = new JLabel(icon);
add(label);

Conclusion
Tu peux maintenant : ✔ Créer une fenêtre Swing avec JFrame
✔ Comprendre le thread Swing
✔ Manipuler les composants et conteneurs
✔ Organiser l’affichage avec des gestionnaires de présentation

😊
✔ Ajouter du texte et des images avec JLabel

Si tu veux approfondir un point ou voir un autre exemple, n'hésite pas !


Vous avez dit :

meme chose
ChatGPT a dit :

D'accord ! Décomposons chaque point avec des explications et des exemples en Java Swing.

1. Cadres (Borders)
Les bordures sont utilisées pour encadrer les composants et améliorer l'organisation visuelle de
l'interface.

Créer différents types de bordures


Exemple avec LineBorder, TitledBorder, CompoundBorder
java
CopierModifier
import [Link].*;
import [Link].*;
import [Link].*;

public class CadresSwing extends JFrame {


public CadresSwing() {
setTitle("Exemple de Bordures");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());

// Création de différentes bordures


JLabel label1 = new JLabel("LineBorder");
[Link](new LineBorder([Link], 2));

JLabel label2 = new JLabel("TitledBorder");


[Link](new TitledBorder("Titre"));

JLabel label3 = new JLabel("CompoundBorder");


[Link](new CompoundBorder(new LineBorder([Link], 2), new
EmptyBorder(5, 5, 5, 5)));

// Ajout des labels


add(label1);
add(label2);
add(label3);
}

public static void main(String[] args) {


[Link](() -> new CadresSwing().setVisible(true));
}
}

Utiliser BorderFactory pour simplifier


java
CopierModifier
JLabel label = new JLabel("Exemple BorderFactory");
[Link]([Link]());

Encadrer un composant avec JPanel


java
CopierModifier
JPanel panel = new JPanel();
[Link]([Link]("Cadre du JPanel"));
[Link](new JButton("Bouton"));
add(panel);

2. Bulles d’aide : setToolTipText


Les tooltips permettent d'afficher une petite aide lorsque l’utilisateur survole un composant.

Exemple : Ajouter une bulle d’aide à un bouton


java
CopierModifier
JButton bouton = new JButton("Survolez-moi !");
[Link]("Cliquez pour exécuter une action !");
add(bouton);
3. Composants simples
Principe de séparation MVC (Modèle-Vue-Contrôleur)
L’architecture MVC sépare :
• Modèle : les données (ex. liste d'éléments)
• Vue : l'affichage graphique (Swing)
• Contrôleur : la gestion des actions (événements)
Cela permet de mieux organiser le code et de faciliter la maintenance.

Bouton JButton
Un JButton est un bouton cliquable.

Exemple d’un bouton avec action


java
CopierModifier
JButton bouton = new JButton("Clique-moi !");
[Link](e -> [Link](null, "Bouton cliqué
!"));
add(bouton);

Checkbox (JCheckBox) et Bouton radio (JRadioButton)


Les JCheckBox permettent de cocher plusieurs options, alors que les JRadioButton doivent
être regroupés avec ButtonGroup.

Exemple avec JCheckBox


java
CopierModifier
JCheckBox check1 = new JCheckBox("Option 1");
JCheckBox check2 = new JCheckBox("Option 2");
add(check1);
add(check2);

Exemple avec JRadioButton et ButtonGroup


java
CopierModifier
JRadioButton radio1 = new JRadioButton("Choix A");
JRadioButton radio2 = new JRadioButton("Choix B");

ButtonGroup group = new ButtonGroup();


[Link](radio1);
[Link](radio2);

add(radio1);
add(radio2);

Champs de texte : JTextField et JTextArea


• JTextField : Champ de texte sur une seule ligne.

• JTextArea : Champ de texte multi-lignes.

Exemple avec JTextField


java
CopierModifier
JTextField textField = new JTextField(20);
add(textField);

Exemple avec JTextArea


java
CopierModifier
JTextArea textArea = new JTextArea(5, 20);
[Link](true);
add(new JScrollPane(textArea)); // Ajout d'une barre de défilement

Champ de texte formaté : JFormattedTextField


Il permet d’imposer un format spécifique (ex. date, nombre).

Exemple : Champ de saisie pour un nombre


java
CopierModifier
import [Link].*;
import [Link];

JFormattedTextField field = new


JFormattedTextField([Link]());
[Link](10);
add(field);

Listes déroulantes (JComboBox) et Listes (JList)


Exemple de JComboBox
java
CopierModifier
String[] options = {"Option 1", "Option 2", "Option 3"};
JComboBox<String> comboBox = new JComboBox<>(options);
add(comboBox);

Exemple de JList
java
CopierModifier
String[] elements = {"Élément 1", "Élément 2", "Élément 3"};
JList<String> list = new JList<>(elements);
add(new JScrollPane(list)); // Ajout d'une barre de défilement

Autres composants interactifs


Barre de progression (JProgressBar)
java
CopierModifier
JProgressBar progressBar = new JProgressBar(0, 100);
[Link](50);
add(progressBar);

Curseur (JSlider)
java
CopierModifier
JSlider slider = new JSlider(0, 100, 50);
add(slider);

Sélecteur numérique (JSpinner)


java
CopierModifier
JSpinner spinner = new JSpinner(new SpinnerNumberModel(10, 0, 100, 1));
add(spinner);

Conclusion
✔ Cadres : Ajout de bordures avec BorderFactory
✔ Bulles d'aide : setToolTipText()
✔ Boutons : JButton, JCheckBox, JRadioButton
✔ Champs de texte : JTextField, JTextArea, JFormattedTextField
✔ Listes et menus déroulants : JComboBox, JList

😊
✔ Autres composants : JProgressBar, JSlider, JSpinner

Si tu veux un autre exemple ou des explications sur un point précis, dis-moi !


Vous avez dit :

ChatGPT a dit :

D'accord ! Voici une explication détaillée avec des exemples pour chaque point.

1. Événements
Concepts de gestion d’événements
Un événement en Swing est déclenché lorsqu’un utilisateur interagit avec un composant (clic,
déplacement de la souris, fermeture de fenêtre, etc.).
Les événements sont capturés grâce à des écouteurs (Listener) qui exécutent une action en
réponse.
• Classes Event : Classes qui représentent les événements (ex: ActionEvent,
MouseEvent, KeyEvent, etc.).

• Interface Listener : Interface permettant de détecter les événements


(ActionListener, MouseListener, etc.).

• Méthodes événements : Chaque Listener possède des méthodes spécifiques


(actionPerformed(), mouseClicked(), etc.).

• Utilisation du Design Pattern Observer : Un composant émet un événement et les


écouteurs l’observent.
• Classes Adapter : Elles permettent d’implémenter seulement les méthodes utiles.

• Définition des écouteurs avec des lambdas (simplifie le code).

1.1 ActionListener (Écouteur d'action)


Utilisé pour détecter un clic sur un JButton.

Exemple : Ajouter un événement sur un bouton


java
CopierModifier
import [Link].*;
import [Link].*;

public class BoutonAction extends JFrame {


public BoutonAction() {
JButton bouton = new JButton("Clique-moi !");

// Ajout d'un écouteur d'événement avec une expression lambda


[Link](e -> [Link](this,
"Bouton cliqué !"));

add(bouton);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {


[Link](BoutonAction::new);
}
}

1.2 MouseListener et MouseMotionListener (Souris)


Permet de détecter les clics et mouvements de la souris.

Exemple : Détecter un clic et mouvement de souris


java
CopierModifier
import [Link].*;
import [Link].*;

public class SourisListener extends JFrame {


public SourisListener() {
JLabel label = new JLabel("Déplacez ou cliquez !");
add(label);

// Ajout d'un MouseListener


addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
[Link]("Clic à : " + [Link]() + ", " + [Link]());
}
});

// Ajout d'un MouseMotionListener


addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
[Link]("Souris à : " + [Link]() + ", " + [Link]());
}
});

setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {


[Link](SourisListener::new);
}
}

1.3 WindowListener (Événements de fenêtre)


Permet de détecter les actions sur la fenêtre (fermeture, activation, minimisation...).

Exemple : Fermer proprement une fenêtre


java
CopierModifier
import [Link].*;
import [Link].*;

public class FenetreListener extends JFrame {


public FenetreListener() {
setTitle("Événements de Fenêtre");
setSize(300, 200);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
[Link]("Fenêtre en train de se fermer...");
[Link](0);
}
});

setVisible(true);
}

public static void main(String[] args) {


[Link](FenetreListener::new);
}
}
1.4 FocusListener (Focus sur un composant)
Utilisé pour détecter quand un composant obtient ou perd le focus.

Exemple : Champ de texte avec focus


java
CopierModifier
JTextField champTexte = new JTextField(20);

[Link](new FocusAdapter() {
public void focusGained(FocusEvent e) {
[Link]("Champ sélectionné !");
}

public void focusLost(FocusEvent e) {


[Link]("Champ désélectionné !");
}
});

2. Boîtes de dialogue prédéfinies


Les boîtes de dialogue Swing permettent d'afficher des fenêtres interactives pour l'utilisateur.

2.1 JFileChooser (Sélection de fichiers)


Permet d'ouvrir une boîte de dialogue pour choisir un fichier ou un dossier.

Exemple : Ouvrir une boîte de sélection de fichiers


java
CopierModifier
import [Link].*;
import [Link];

public class ChoisirFichier {


public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser();
int resultat = [Link](null);

if (resultat == JFileChooser.APPROVE_OPTION) {
File fichier = [Link]();
[Link]("Fichier sélectionné : " +
[Link]());
}
}
}

Options configurables :
• setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY) → Sélection de
dossiers
• setMultiSelectionEnabled(true) → Autoriser plusieurs fichiers
• setFileFilter(new FileNameExtensionFilter("Images", "jpg",
"png")) → Filtrer les types de fichiers

2.2 JOptionPane (Boîte de message et confirmation)


Permet d'afficher des messages, des demandes de confirmation ou des entrées utilisateur.

Exemple : Afficher un message d’information


java
CopierModifier
[Link](null, "Ceci est un message d'information !");

Exemple : Demander une confirmation


java
CopierModifier
int reponse = [Link](null, "Voulez-vous continuer ?",
"Confirmation", JOptionPane.YES_NO_OPTION);
if (reponse == JOptionPane.YES_OPTION) {
[Link]("L'utilisateur a choisi Oui");
}

Exemple : Demander une entrée utilisateur


java
CopierModifier
String nom = [Link]("Entrez votre nom :");
[Link]("Nom saisi : " + nom);

Conclusion
✔ Événements Swing : Listeners (ActionListener, MouseListener,
WindowListener...)
✔ Gestion des interactions utilisateur avec les composants

😊
✔ Boîtes de dialogue prédéfinies : JFileChooser, JOptionPane

Tu veux approfondir un point ou tester un autre exemple ?


Vous avez dit :

ChatGPT a dit :

D'accord ! Voici une explication détaillée avec des exemples pour chaque point.

1. Menus
Ajouter une barre de menus (JMenuBar)
Une barre de menus est un conteneur qui contient plusieurs menus (JMenu), eux-mêmes contenant
des items (JMenuItem).

Exemple : Ajouter une barre de menus à une application


java
CopierModifier
import [Link].*;

public class ExempleMenu extends JFrame {


public ExempleMenu() {
setTitle("Exemple de Menu");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Création de la barre de menus


JMenuBar menuBar = new JMenuBar();

// Création d'un menu


JMenu menuFichier = new JMenu("Fichier");

// Création d'items de menu


JMenuItem itemOuvrir = new JMenuItem("Ouvrir");
JMenuItem itemQuitter = new JMenuItem("Quitter");

// Ajout d'une action pour quitter l'application


[Link](e -> [Link](0));

// Ajout des items au menu


[Link](itemOuvrir);
[Link](); // Séparateur entre les items
[Link](itemQuitter);

// Ajout du menu à la barre de menus


[Link](menuFichier);

// Ajout de la barre de menus à la fenêtre


setJMenuBar(menuBar);
}

public static void main(String[] args) {


[Link](() -> new ExempleMenu().setVisible(true));
}
}

Ajouter des raccourcis clavier (accélérateurs et mnémoniques)


• Mnémonique (setMnemonic) : Permet d’accéder à un menu via ALT + Lettre

• Accélérateur (setAccelerator) : Permet d’associer un raccourci clavier (ex:


CTRL+O)

Exemple : Ajouter un raccourci clavier


java
CopierModifier
[Link]('O'); // ALT+O pour ouvrir
[Link]([Link]("ctrl O")); // CTRL+O

2. Actions (ActionListener)
Une action permet de réutiliser du code entre plusieurs composants comme des boutons ou des
items de menu.

Exemple : Créer une classe d’action réutilisable


java
CopierModifier
import [Link].*;
import [Link];

public class ExempleAction extends AbstractAction {


public ExempleAction() {
super("Ouvrir");
putValue(ACCELERATOR_KEY, [Link]("ctrl O"));
}

@Override
public void actionPerformed(ActionEvent e) {
[Link](null, "Action exécutée !");
}

public static void main(String[] args) {


JFrame frame = new JFrame("Exemple Actions");
[Link](300, 200);
[Link](JFrame.EXIT_ON_CLOSE);

JMenuBar menuBar = new JMenuBar();


JMenu menu = new JMenu("Fichier");

Action actionOuvrir = new ExempleAction();


JMenuItem itemOuvrir = new JMenuItem(actionOuvrir);
JButton boutonOuvrir = new JButton(actionOuvrir);

[Link](itemOuvrir);
[Link](menu);
[Link](menuBar);
[Link](boutonOuvrir);

[Link](true);
}
}

🔹 Avantages : Réutilisation de la même action pour le menu et le bouton.

3. Conteneurs spécifiques
JScrollPane (Ajout d'un composant défilable)
Utilisé pour ajouter une barre de défilement à des composants comme JTextArea, JTable ou
JList.

Exemple : Ajouter un JScrollPane à un JTextArea


java
CopierModifier
JTextArea textArea = new JTextArea(10, 30);
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane);

JSplitPane (Séparation d'affichage)


Permet de diviser la fenêtre en deux panneaux redimensionnables.
Exemple : Interface divisée en deux panneaux
java
CopierModifier
JPanel panelGauche = new JPanel();
JPanel panelDroite = new JPanel();
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panelGauche,
panelDroite);
[Link](150);
add(splitPane);

JTabbedPane (Onglets)
Permet d’organiser des composants sous forme d’onglets, utile pour les interfaces complexes.

Exemple : Interface avec plusieurs onglets


java
CopierModifier
JTabbedPane tabbedPane = new JTabbedPane();
[Link]("Onglet 1", new JPanel());
[Link]("Onglet 2", new JPanel());
add(tabbedPane);

JToolBar (Barre d’outils)


Affiche une barre d’outils avec des boutons d’action.

Exemple : Ajouter une JToolBar


java
CopierModifier
JToolBar toolBar = new JToolBar();
[Link](new JButton("Nouveau"));
[Link](new JButton("Ouvrir"));
[Link](new JButton("Enregistrer"));
add(toolBar, [Link]);

JDesktopPane et JInternalFrame (Fenêtres internes)


Ces composants permettent d’avoir des fenêtres internes dans une application de type bureau.

Exemple : Ajouter une fenêtre interne (JInternalFrame)


java
CopierModifier
import [Link].*;

public class ExempleDesktop extends JFrame {


public ExempleDesktop() {
setTitle("Exemple JDesktopPane");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JDesktopPane desktopPane = new JDesktopPane();


add(desktopPane);

// Création d'une fenêtre interne


JInternalFrame internalFrame = new JInternalFrame("Fenêtre Interne",
true, true, true, true);
[Link](300, 200);
[Link](true);

[Link](internalFrame);
}

public static void main(String[] args) {


[Link](() -> new ExempleDesktop().setVisible(true));
}
}

Conclusion
✔ Menus (JMenuBar, JMenuItem)
✔ Accélérateurs et mnémoniques (setAccelerator, setMnemonic)
✔ Actions (AbstractAction) pour réutiliser le même code
✔ Conteneurs spécifiques :
• JScrollPane (défilement)

• JSplitPane (division de l’interface)

• JTabbedPane (onglets)

• JToolBar (barre d’outils)

😊
• JDesktopPane et JInternalFrame (fenêtres internes)

Tu veux plus d’exemples ou une explication plus détaillée sur un point précis ?

Vous avez dit :


et des exemples sur éance 3 : Internationalisation/ExternalisationURL Séance 4 : ErgonomieURL
Séance 5 : Graphisme en Java - cours Fichier
ChatGPT a dit :

Séance 3 : Internationalisation et Externalisation des URLs


L'internationalisation et l'externalisation permettent de rendre une application multilingue et de
gérer dynamiquement des URLs et ressources externes.

1. Internationalisation (ResourceBundle)
Java permet de gérer plusieurs langues avec la classe ResourceBundle, qui charge les
traductions à partir de fichiers .properties.
Exemple : Gestion des langues avec ResourceBundle
1. Créer des fichiers de propriétés (messages_fr.properties,

📌
messages_en.properties)
messages_fr.properties
makefile
CopierModifier
bienvenue=Bienvenue dans l'application !
quitter=Quitter

📌 messages_en.properties
ini
CopierModifier
bienvenue=Welcome to the application!
quitter=Exit

2. Utiliser ResourceBundle pour charger la bonne traduction


java
CopierModifier
import [Link];
import [Link];

public class Internationalisation {


public static void main(String[] args) {
Locale locale = [Link](); // Détection automatique de la
langue du système
ResourceBundle messages = [Link]("messages", locale);

[Link]([Link]("bienvenue"));
[Link]([Link]("quitter"));
}
}

👉 Changer la langue avec new Locale("en", "US").

2. Externalisation des URLs


Permet d'éviter les URLs en dur dans le code et de les stocker dans un fichier .properties.

📌
Exemple : Stocker les URLs dans un fichier de configuration
[Link]
ini
CopierModifier
[Link]=[Link]
[Link]=[Link]

Charger les URLs dynamiquement en Java


java
CopierModifier
import [Link];
import [Link];
import [Link];
public class ChargementURL {
public static void main(String[] args) {
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream("[Link]")) {
[Link](fis);
[Link]("API URL : " + [Link]("[Link]"));
[Link]("Site Web : " + [Link]("[Link]"));
} catch (IOException e) {
[Link]();
}
}
}

✔ Permet de changer les URLs sans modifier le code source.

Séance 4 : Ergonomie en Java Swing


L'ergonomie d'une interface utilisateur concerne l'accessibilité, la lisibilité et la fluidité des
interactions.

1. Optimisation de la lisibilité
✔ Utiliser une police adaptée
java
CopierModifier
import [Link].*;
import [Link].*;

public class PoliceLisible {


public static void main(String[] args) {
JFrame frame = new JFrame("Lisibilité");
JLabel label = new JLabel("Texte clair et lisible");
[Link](new Font("Arial", [Link], 18)); // Police lisible
[Link](label);
[Link](300, 200);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
}

✔ Utiliser un contraste suffisant


java
CopierModifier
[Link]([Link]); // Texte sombre
[Link]().setBackground(Color.LIGHT_GRAY); // Fond clair

2. Rendre l'interface intuitive


✔ Regroupement logique des éléments
java
CopierModifier
JPanel panel = new JPanel(new GridLayout(2, 2)); // Organisation en grille
[Link](new JLabel("Nom :"));
[Link](new JTextField(10));
[Link](new JLabel("Email :"));
[Link](new JTextField(10));

✔ Utiliser des icônes pour guider l'utilisateur


java
CopierModifier
JButton bouton = new JButton("Sauvegarder", new ImageIcon("[Link]"));

Séance 5 : Graphisme en Java


Swing permet d'afficher des formes graphiques, dessins et animations via Graphics2D.

1. Dessiner des formes (paintComponent)


java
CopierModifier
import [Link].*;
import [Link].*;

class DessinPanel extends JPanel {


@Override
protected void paintComponent(Graphics g) {
[Link](g);
[Link]([Link]);
[Link](50, 50, 100, 100); // Carré rouge
[Link]([Link]);
[Link](200, 50, 100, 100); // Cercle bleu
}
}

public class GraphismeJava {


public static void main(String[] args) {
JFrame frame = new JFrame("Dessin en Java");
[Link](new DessinPanel());
[Link](400, 300);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
}

2. Ajouter des animations (Timer)


java
CopierModifier
import [Link].*;
import [Link].*;

class AnimationPanel extends JPanel {


private int x = 50;

public AnimationPanel() {
Timer timer = new Timer(30, e -> {
x += 5;
if (x > getWidth()) x = -50;
repaint();
});
[Link]();
}

@Override
protected void paintComponent(Graphics g) {
[Link](g);
[Link]([Link]);
[Link](x, 100, 50, 50);
}
}

public class Animation {


public static void main(String[] args) {
JFrame frame = new JFrame("Animation");
[Link](new AnimationPanel());
[Link](400, 300);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
}

✔ Ajoute un cercle animé se déplaçant à l’écran.

3. Charger une image et l'afficher


java
CopierModifier
import [Link].*;
import [Link].*;

class ImagePanel extends JPanel {


private Image img;

public ImagePanel() {
img = new ImageIcon("[Link]").getImage(); // Charger une image
}

@Override
protected void paintComponent(Graphics g) {
[Link](g);
[Link](img, 50, 50, this);
}
}

public class AffichageImage {


public static void main(String[] args) {
JFrame frame = new JFrame("Affichage Image");
[Link](new ImagePanel());
[Link](400, 300);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
}

✔ Charge et affiche une image dans un JPanel.


Résumé final
📌 Séance 3 - Internationalisation/Externalisation
✔ ResourceBundle pour les langues

📌
✔ Properties pour externaliser les URLs

Séance 4 - Ergonomie Swing


✔ Polices lisibles, contrastes

📌
✔ Interface intuitive (grille, icônes, organisation logique)
Séance 5 - Graphisme en Java
✔ paintComponent(Graphics g) pour dessiner des formes
✔ Timer pour les animations

😊
✔ drawImage() pour afficher des images

Tu veux approfondir un point ?

Vous avez dit :


maintenant donne moi un qcm de 50 questions sur tout ce qui a été présenté
ChatGPT a dit :

Voici un QCM de 50 questions couvrant tout ce qui a été présenté sur Swing, événements,
internationalisation, ergonomie et graphisme en Java.

📌

QCM - Java Swing & UI
Instructions : Pour chaque question, choisissez une seule bonne réponse (A, B, C ou D).

🔹 Partie 1 : Concepts de base de Swing (10 questions)


1. Quelle classe est utilisée pour créer une fenêtre principale en Swing ?
A) JPanel
B) JFrame
C) JWindow
D) JLabel

2. Quel gestionnaire de disposition place les composants de gauche à droite, puis à la ligne si
nécessaire ?
A) FlowLayout
B) BorderLayout
C) GridLayout
D) BoxLayout

3. Quel est le rôle de [Link]() ?


A) Exécuter un code immédiatement
B) Exécuter du code sur le thread principal
C) Exécuter du code sur le thread de l'interface graphique
D) Terminer l'application
4. Quelle classe permet d'ajouter une image dans une interface Swing ?
A) JTextField
B) JPanel
C) JImage
D) JLabel

5. Quel composant permet d'ajouter des barres de défilement à un autre composant ?


A) JList
B) JScrollPane
C) JTable
D) JViewport

6. Quelle disposition est utilisée pour organiser les composants en cellules de taille fixe ?
A) GridLayout
B) BorderLayout
C) FlowLayout
D) GroupLayout

7. Quelle méthode permet de fermer une fenêtre Swing proprement ?


A) dispose()
B) exit()
C) closeWindow()
D) shutdown()

8. Comment ajoute-t-on un gestionnaire d'événements à un bouton en utilisant une expression


lambda ?
A) [Link](e -> { ... });
B) [Link](e -> { ... });
C) [Link](e -> { ... });
D) [Link](e -> { ... });

9. Comment définir une icône sur un JButton ?


A) [Link](new ImageIcon("[Link]"));
B) [Link]("[Link]");
C) [Link]("[Link]");
D) [Link](new ImageIcon("[Link]"));

10. Quel gestionnaire de mise en page permet d'organiser les composants sous forme d'onglets
?
A) JTabbedPane
B) JMenuBar
C) JToolBar
D) JList
🔹 Partie 2 : Événements en Swing (10 questions)
11. Quel Listener est utilisé pour détecter un clic sur un bouton ?
A) MouseListener
B) KeyListener
C) ActionListener
D) WindowListener

12. Quelle méthode de MouseListener est appelée lorsqu'un utilisateur clique sur un
composant ?
A) mouseClicked()
B) mousePressed()
C) mouseMoved()
D) mouseExited()

13. Comment écouter les événements de fermeture de fenêtre ?


A) addWindowListener()
B) addCloseListener()
C) setOnClose()
D) onWindowClose()

14. Quelle méthode de FocusListener est appelée lorsqu'un composant gagne le focus ?
A) focusEntered()
B) focusGained()
C) focusActivated()
D) focusOn()

15. Comment obtenir les coordonnées du clic de la souris dans MouseEvent ?


A) getCoordinates()
B) getPosition()
C) getX(), getY()
D) mousePosition()

🔹 Partie 3 : Internationalisation (10 questions)


16. Quelle classe est utilisée pour charger les traductions en Java ?
A) Properties
B) ResourceBundle
C) Locale
D) TranslationLoader

17. Quel format de fichier est utilisé pour stocker les traductions ?
A) .json
B) .xml
C) .properties
D) .txt
18. Comment récupérer un message traduit depuis un ResourceBundle ?
A) [Link]("clé");
B) [Link]("clé");
C) [Link]("clé");
D) [Link]("clé");

🔹 Partie 4 : Ergonomie et Accessibilité (10 questions)


19. Quelle propriété améliore la lisibilité du texte ?
A) setFont(new Font("Arial", [Link], 16))
B) setSize(new Dimension(200, 50))
C) setVisible(true)
D) setBold(true)

20. Quelle méthode permet d'ajouter une infobulle (tooltip) à un bouton ?


A) setHelpText()
B) setToolTipText()
C) setHintText()
D) setInfoText()

🔹 Partie 5 : Graphisme et Dessin en Java (10 questions)


21. Quelle méthode est utilisée pour dessiner une forme dans un JPanel ?
A) draw(Graphics g)
B) paintComponent(Graphics g)
C) render(Graphics g)
D) onDraw(Graphics g)
22. Quelle classe permet de gérer des animations en Swing ?
A) JAnimation
B) AnimationManager
C) Timer
D) SwingAnimation

23. Comment afficher une image dans un JPanel ?


A) drawImage()
B) setImage()
C) showImage()
D) addImage()

✅ Correction rapide (réponses)


1. B | 2. A | 3. C | 4. D | 5. B | 6. A | 7. A | 8. C | 9. A | 10. A
2. C | 12. A | 13. A | 14. B | 15. C
3. B | 17. C | 18. A
4. A | 20. B
5. B | 22. C | 23. A

Tu veux des explications détaillées sur certaines questions ? 😊


Vous avez dit :
les réponses de la premiere partie
ChatGPT a dit :

Voici les réponses détaillées de la première partie du QCM sur les concepts de base de Swing.

🔹 Partie 1 : Concepts de base de Swing (10 questions)


1. Quelle classe est utilisée pour créer une fenêtre principale en Swing ?

👉
Réponse : B) JFrame
JFrame est la classe principale pour créer une fenêtre en Swing. JPanel est un conteneur,
JWindow est une fenêtre sans bordure, et JLabel sert à afficher du texte ou des images.

2. Quel gestionnaire de disposition place les composants de gauche à droite, puis à la ligne si


nécessaire ?

👉
Réponse : A) FlowLayout
FlowLayout place les composants horizontalement et passe à la ligne si l’espace est
insuffisant. BorderLayout divise en 5 régions, GridLayout place dans une grille et
BoxLayout aligne les composants verticalement ou horizontalement.


3. Quel est le rôle de [Link]() ?

👉 Réponse : C) Exécuter du code sur le thread de l'interface graphique


Swing utilise un thread d’interface graphique pour éviter des bugs d'affichage.
invokeLater() garantit que le code Swing est exécuté correctement.


4. Quelle classe permet d'ajouter une image dans une interface Swing ?

👉
Réponse : D) JLabel
JLabel peut afficher du texte et des images avec setIcon(new
ImageIcon("[Link]")). JTextField est pour la saisie, JPanel est un conteneur et
JImage n’existe pas.


5. Quel composant permet d'ajouter des barres de défilement à un autre composant ?
Réponse : B) JScrollPane
👉 JScrollPane permet d'ajouter des barres de défilement à des composants comme
JTextArea ou JTable. JList est une liste, JTable est un tableau, JViewport est une sous-
classe de JScrollPane.


6. Quelle disposition est utilisée pour organiser les composants en cellules de taille fixe ?

👉
Réponse : A) GridLayout
GridLayout divise la fenêtre en une grille de cellules de taille fixe. BorderLayout divise
en 5 régions, FlowLayout aligne en ligne et GroupLayout est plus complexe.


7. Quelle méthode permet de fermer une fenêtre Swing proprement ?

👉
Réponse : A) dispose()
dispose() ferme la fenêtre sans arrêter l’application. exit() arrête tout,
closeWindow() et shutdown() n’existent pas.

8. Comment ajoute-t-on un gestionnaire d'événements à un bouton en utilisant une expression


lambda ?

👉
Réponse : C) [Link](e -> { ... });
addActionListener() permet d’ajouter un événement à un bouton. Les autres options
sont incorrectes.


9. Comment définir une icône sur un JButton ?

👉
Réponse : A) [Link](new ImageIcon("[Link]"));
setIcon() ajoute une icône à un JButton. setImage(), setPicture(), et
setGraphic() n’existent pas.

10. Quel gestionnaire de mise en page permet d'organiser les composants sous forme d'onglets


?

👉
Réponse : A) JTabbedPane
JTabbedPane permet d’avoir plusieurs onglets. JMenuBar est pour les menus, JToolBar
pour les barres d’outils, et JList est une liste.

✅ Résumé des réponses de la Partie 1


1. B) JFrame

2. A) FlowLayout

3. C) [Link]()

4. D) JLabel

5. B) JScrollPane
6. A) GridLayout

7. A) dispose()

8. C) [Link](e -> { ... });

9. A) [Link](new ImageIcon("[Link]"));

10.A) JTabbedPane

Tu veux que j'explique plus en détail certaines réponses ? 😊


Vous avez dit :
les autres parties

🔹
ChatGPT a dit :

Partie 2 : Événements en Swing (10 questions)


11. Quel Listener est utilisé pour détecter un clic sur un bouton ?

👉
Réponse : C) ActionListener
ActionListener est utilisé pour gérer les actions des boutons (JButton).
MouseListener détecte les clics sur la souris, KeyListener les frappes au clavier et
WindowListener les événements de fenêtre.

12. Quelle méthode de MouseListener est appelée lorsqu'un utilisateur clique sur un


composant ?

👉
Réponse : A) mouseClicked()
mouseClicked() est déclenché après un clic. mousePressed() est déclenché lorsque le
bouton est pressé, mouseMoved() détecte les mouvements, et mouseExited() quand la souris
quitte le composant.


13. Comment écouter les événements de fermeture de fenêtre ?

👉
Réponse : A) addWindowListener()
addWindowListener() permet d'ajouter un WindowListener pour détecter les
événements liés à une fenêtre.


14. Quelle méthode de FocusListener est appelée lorsqu'un composant gagne le focus ?

👉
Réponse : B) focusGained()
focusGained() est déclenché quand un composant devient actif. focusLost() est
déclenché quand il perd le focus. focusEntered() et focusOn() n’existent pas.

15. Comment obtenir les coordonnées du clic de la souris dans MouseEvent ?

👉
Réponse : C) getX(), getY()
getX() et getY() récupèrent les coordonnées du clic. Les autres options sont incorrectes.

🔹 Partie 3 : Internationalisation (5 questions)


16. Quelle classe est utilisée pour charger les traductions en Java ?

👉
Réponse : B) ResourceBundle
ResourceBundle charge les fichiers .properties. Properties gère les fichiers de
configuration généraux, Locale définit une langue, TranslationLoader n'existe pas.


17. Quel format de fichier est utilisé pour stocker les traductions ?

👉
Réponse : C) .properties
Les fichiers .properties contiennent des paires clé=valeur pour chaque langue.


18. Comment récupérer un message traduit depuis un ResourceBundle ?

👉
Réponse : A) [Link]("clé");
getString("clé") permet de récupérer une valeur à partir du fichier de propriétés.

🔹 Partie 4 : Ergonomie et Accessibilité (5 questions)


19. Quelle propriété améliore la lisibilité du texte ?

👉
Réponse : A) setFont(new Font("Arial", [Link], 16))
setFont() permet de définir une police lisible.


20. Quelle méthode permet d'ajouter une infobulle (tooltip) à un bouton ?

👉
Réponse : B) setToolTipText()
setToolTipText("Texte explicatif") ajoute une infobulle. setHelpText() et
setHintText() n'existent pas.

🔹 Partie 5 : Graphisme et Dessin en Java (5 questions)


21. Quelle méthode est utilisée pour dessiner une forme dans un JPanel ?

👉
Réponse : B) paintComponent(Graphics g)
paintComponent() est la méthode à redéfinir pour dessiner.


22. Quelle classe permet de gérer des animations en Swing ?

👉
Réponse : C) Timer
Timer permet d’exécuter une action à intervalle régulier.

23. Comment afficher une image dans un JPanel ?

👉
Réponse : A) drawImage()
drawImage(image, x, y, this); permet d’afficher une image.


🔹
Résumé des réponses finales
Partie 2 : Événements en Swing
11. C) ActionListener
12. A) mouseClicked()
13. A) addWindowListener()
14. B) focusGained()

🔹
15. C) getX(), getY()

Partie 3 : Internationalisation
16. B) ResourceBundle
17. C) .properties

🔹
18. A) [Link]("clé");

Partie 4 : Ergonomie
19. A) setFont(new Font("Arial", [Link], 16))

🔹
20. B) setToolTipText()

Partie 5 : Graphisme et Dessin


21. B) paintComponent(Graphics g)
22. C) Timer
23. A) drawImage()

Tu veux des explications plus détaillées sur certaines questions ? 😊


Vous avez dit :
ajoute moi des qcm

📌
ChatGPT a dit :

QCM Supplémentaire : Java Swing, Événements, Internationalisation,


Ergonomie et Graphisme
Instructions : Pour chaque question, choisissez une seule bonne réponse (A, B, C ou D).

🔹 Partie 1 : Composants Swing et Conteneurs (10 questions)


1. Quel composant Swing est utilisé pour afficher une liste déroulante ?
A) JList
B) JComboBox
C) JTable
D) JTextField

2. Quelle classe est utilisée pour afficher une boîte de dialogue simple avec un message ?
A) JOptionPane
B) JDialog
C) JMessageBox
D) JFrame

3. Quel gestionnaire de mise en page est utilisé par défaut dans un JFrame ?
A) FlowLayout
B) BorderLayout
C) GridLayout
D) CardLayout

4. Quel composant Swing est utilisé pour insérer du texte statique dans une interface ?
A) JTextField
B) JLabel
C) JTextArea
D) JList

5. Quel composant est utilisé pour afficher une barre de progression ?


A) JSlider
B) JProgressBar
C) JSpinner
D) JStatusBar

6. Comment rendre un JFrame visible après sa création ?


A) setDisplay(true);
B) setVisible(true);
C) setShow(true);
D) showWindow();

7. Quel composant permet de créer une barre d'outils en Java Swing ?


A) JMenuBar
B) JToolBar
C) JMenu
D) JActionBar

8. Quel est le conteneur Swing permettant d'organiser plusieurs fenêtres internes dans un
même cadre ?
A) JFrameManager
B) JTabbedPane
C) JDesktopPane
D) JInternalPane

9. Quel est le rôle de JScrollPane ?


A) Permettre le défilement d’un composant
B) Ajouter des onglets à une application
C) Organiser les composants en grille
D) Gérer les animations
10. Comment définir une couleur de fond sur un JPanel ?
A) setBackgroundColor([Link]);
B) setBackground([Link]);
C) setColor([Link]);
D) setFill([Link]);

🔹 Partie 2 : Événements et Actions en Java Swing (10


questions)
11. Quelle interface est utilisée pour détecter un appui sur une touche du clavier ?
A) MouseListener
B) KeyListener
C) ActionListener
D) FocusListener

12. Quelle méthode est appelée lorsqu'une touche est pressée avec KeyListener ?
A) keyTyped()
B) keyPressed()
C) keyClicked()
D) keyReleased()

13. Quelle méthode est utilisée pour ajouter un écouteur d'action sur un bouton ?
A) addClickListener()
B) addMouseListener()
C) addActionListener()
D) setOnClickListener()

14. Quel listener permet de détecter l'entrée et la sortie de la souris sur un composant ?
A) MouseMotionListener
B) MouseAdapter
C) MouseListener
D) ComponentListener

15. Quelle méthode est appelée lorsqu’un utilisateur ferme une fenêtre ?
A) windowClosing()
B) onClose()
C) closeWindow()
D) exitWindow()

16. Quel événement est déclenché lorsqu’un utilisateur modifie la sélection dans une
JComboBox ?
A) itemChanged()
B) selectionChanged()
C) actionPerformed()
D) comboBoxUpdated()

17. Quelle interface permet de détecter les changements de focus entre composants ?
A) WindowListener
B) FocusListener
C) ActionListener
D) KeyListener

18. Quelle classe permet de créer une action réutilisable pour plusieurs composants ?
A) AbstractAction
B) JAction
C) SwingAction
D) UIAction

19. Quelle méthode permet d’afficher une boîte de dialogue demandant à l’utilisateur une
entrée de texte ?
A) [Link]()
B) [Link]()
C) [Link]()
D) [Link]()

20. Comment obtenir la position de la souris dans un MouseEvent ?


A) [Link]();
B) [Link]();
C) [Link](), [Link]();
D) [Link]();

🔹 Partie 3 : Graphisme et Dessin (10 questions)


21. Quelle classe est utilisée pour dessiner des formes en Java Swing ?
A) JGraphics
B) Graphics2D
C) SwingDraw
D) UIShape

22. Quelle méthode permet de dessiner un rectangle dans Graphics ?


A) drawRectangle()
B) drawRect()
C) paintRectangle()
D) fillRectangle()

23. Quelle classe est utilisée pour charger une image en Java Swing ?
A) JImage
B) ImageIcon
C) SwingImage
D) BufferedImage

24. Quelle méthode permet d'afficher une image dans un JPanel ?


A) showImage()
B) setImage()
C) drawImage()
D) displayImage()

25. Quelle méthode de Timer est utilisée pour exécuter une action répétitive ?
A) start()
B) execute()
C) run()
D) loop()

26. Quel composant Swing permet d'afficher une animation simple ?


A) JAnimation
B) JLabel
C) Timer
D) JCanvas

27. Quelle méthode permet de dessiner un cercle avec Graphics ?


A) drawCircle()
B) fillOval()
C) paintOval()
D) drawRoundRect()

28. Comment dessiner une ligne dans Graphics ?


A) drawLine(x1, y1, x2, y2);
B) createLine(x1, y1, x2, y2);
C) drawSegment(x1, y1, x2, y2);
D) fillLine(x1, y1, x2, y2);

Si tu veux les réponses détaillées, dis-le-moi ! 😊


Vous avez dit :
repond en donnant la solution justifiée

📌
ChatGPT a dit :

Correction et Explication du QCM Supplémentaire : Java Swing,


Événements, Internationalisation, Ergonomie et Graphisme
🔹 Partie 1 : Composants Swing et Conteneurs (10 questions)


1. Quel composant Swing est utilisé pour afficher une liste déroulante ?

👉
Réponse : B) JComboBox
JComboBox est utilisée pour créer une liste déroulante. JList affiche une liste statique,
JTable est un tableau et JTextField est un champ de texte.


2. Quelle classe est utilisée pour afficher une boîte de dialogue simple avec un message ?

👉
Réponse : A) JOptionPane
[Link]() permet d'afficher une boîte de message.
JDialog est une boîte de dialogue personnalisable mais plus complexe.


3. Quel gestionnaire de mise en page est utilisé par défaut dans un JFrame ?

👉
Réponse : B) BorderLayout
BorderLayout est le gestionnaire de mise en page par défaut d'un JFrame, avec cinq zones
(NORTH, SOUTH, EAST, WEST, CENTER).


4. Quel composant Swing est utilisé pour insérer du texte statique dans une interface ?

👉
Réponse : B) JLabel
JLabel est utilisé pour afficher du texte statique. JTextField est un champ de saisie,
JTextArea gère du texte multi-ligne.


5. Quel composant est utilisé pour afficher une barre de progression ?

👉
Réponse : B) JProgressBar
JProgressBar affiche une barre de progression. JSlider est un curseur, JSpinner
permet de sélectionner une valeur numérique.


6. Comment rendre un JFrame visible après sa création ?

👉
Réponse : B) setVisible(true);
setVisible(true) est la méthode correcte pour afficher une fenêtre Swing.


7. Quel composant permet de créer une barre d'outils en Java Swing ?

👉
Réponse : B) JToolBar
JToolBar est utilisé pour ajouter une barre d’outils contenant des boutons et des actions.

8. Quel est le conteneur Swing permettant d'organiser plusieurs fenêtres internes dans un


même cadre ?

👉
Réponse : C) JDesktopPane
JDesktopPane est utilisé pour gérer plusieurs fenêtres internes (JInternalFrame).

9. Quel est le rôle de JScrollPane ?

👉 Réponse : A) Permettre le défilement d’un composant


JScrollPane ajoute une barre de défilement à un composant comme JTextArea ou
JTable.


10. Comment définir une couleur de fond sur un JPanel ?

👉
Réponse : B) setBackground([Link]);
setBackground([Link]) est la méthode correcte pour changer la couleur de fond.

🔹 Partie 2 : Événements et Actions en Java Swing (10


questions)


11. Quelle interface est utilisée pour détecter un appui sur une touche du clavier ?

👉
Réponse : B) KeyListener
KeyListener permet de capturer les événements clavier.


12. Quelle méthode est appelée lorsqu'une touche est pressée avec KeyListener ?

👉
Réponse : B) keyPressed()
keyPressed() est appelée lorsqu’une touche est enfoncée.


13. Quelle méthode est utilisée pour ajouter un écouteur d'action sur un bouton ?

👉
Réponse : C) addActionListener()
addActionListener() est utilisé pour écouter les clics sur un JButton.


14. Quel listener permet de détecter l'entrée et la sortie de la souris sur un composant ?

👉
Réponse : C) MouseListener
MouseListener permet de détecter les interactions avec la souris.


15. Quelle méthode est appelée lorsqu’un utilisateur ferme une fenêtre ?

👉
Réponse : A) windowClosing()
windowClosing() est déclenchée lorsqu’un utilisateur tente de fermer la fenêtre.

16. Quel événement est déclenché lorsqu’un utilisateur modifie la sélection dans une


JComboBox ?

👉
Réponse : C) actionPerformed()
JComboBox utilise actionPerformed() pour détecter un changement de sélection.

17. Quelle interface permet de détecter les changements de focus entre composants ?

👉
Réponse : B) FocusListener
FocusListener permet de détecter les gains et pertes de focus.


18. Quelle classe permet de créer une action réutilisable pour plusieurs composants ?

👉
Réponse : A) AbstractAction
AbstractAction permet de définir une action pouvant être partagée entre plusieurs
composants.

19. Quelle méthode permet d’afficher une boîte de dialogue demandant à l’utilisateur une


entrée de texte ?

👉
Réponse : B) [Link]()
showInputDialog() affiche une boîte de dialogue permettant de saisir un texte.


20. Comment obtenir la position de la souris dans un MouseEvent ?

👉
Réponse : C) [Link](), [Link]();
getX() et getY() permettent de récupérer les coordonnées du clic.

🔹 Partie 3 : Graphisme et Dessin (10 questions)


21. Quelle classe est utilisée pour dessiner des formes en Java Swing ?

👉
Réponse : B) Graphics2D
Graphics2D offre des fonctionnalités avancées de dessin.


22. Quelle méthode permet de dessiner un rectangle dans Graphics ?

👉
Réponse : B) drawRect()
drawRect(x, y, largeur, hauteur) dessine un rectangle.


23. Quelle classe est utilisée pour charger une image en Java Swing ?

👉
Réponse : B) ImageIcon
ImageIcon est utilisé pour charger des images et les afficher dans un JLabel.


24. Quelle méthode permet d'afficher une image dans un JPanel ?

👉
Réponse : C) drawImage()
drawImage() est utilisée pour dessiner une image.

25. Quelle méthode de Timer est utilisée pour exécuter une action répétitive ?

👉
Réponse : A) start()
start() démarre un Timer.


26. Quel composant Swing permet d'afficher une animation simple ?

👉
Réponse : C) Timer
Timer permet d’exécuter des animations.


27. Quelle méthode permet de dessiner un cercle avec Graphics ?

👉
Réponse : B) fillOval()
fillOval(x, y, largeur, hauteur) dessine un cercle ou une ellipse remplie.


28. Comment dessiner une ligne dans Graphics ?

👉
Réponse : A) drawLine(x1, y1, x2, y2);
drawLine() permet de dessiner une ligne.

✅✅ Résumé des réponses


• Partie 1 : Questions 1 à 10


• Partie 2 : Questions 11 à 20
• Partie 3 : Questions 21 à 28

Vous aimerez peut-être aussi