Files
BUT2/TP_DEV3.1/Transitions/GalerieSimple.java
2025-10-23 14:28:03 +02:00

95 lines
3.0 KiB
Java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GalerieSimple extends JFrame {
// Tableau des fichiers images
private String[] fichiers = { "img1.jpg", "img2.jpg", "img3.jpg", "img4.jpg" };
private int indiceImage = 0;
// Composants graphiques
private JLabel etiquetteImage = new JLabel();
public GalerieSimple() {
super("Galerie avec Confirmation");
// Affichage de la première image
etiquetteImage.setHorizontalAlignment(SwingConstants.CENTER);
etiquetteImage.setIcon(new ImageIcon(fichiers[indiceImage]));
// Panneau principal
JPanel panneau = new JPanel(new BorderLayout());
panneau.add(etiquetteImage, BorderLayout.CENTER);
// Clic souris → suivant ou précédent
panneau.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int largeur = panneau.getWidth();
if (e.getX() >= largeur / 2) {
imageSuivante();
} else {
imagePrecedente();
}
}
});
// Fermeture personnalisée (on demande confirmation)
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
demanderConfirmation();
}
});
// Paramètres de la fenêtre
setContentPane(panneau);
setSize(800, 600);
setLocationRelativeTo(null);
}
private void imageSuivante() {
indiceImage = (indiceImage + 1) % fichiers.length;
etiquetteImage.setIcon(new ImageIcon(fichiers[indiceImage]));
}
private void imagePrecedente() {
indiceImage = (indiceImage - 1 + fichiers.length) % fichiers.length;
etiquetteImage.setIcon(new ImageIcon(fichiers[indiceImage]));
}
private void demanderConfirmation() {
// Fenêtre modale faite avec JDialog
JDialog dialogue = new JDialog(this, "Confirmation", true);
dialogue.setLayout(new BorderLayout());
JLabel message = new JLabel("Voulez-vous quitter ?", SwingConstants.CENTER);
JPanel panneauBoutons = new JPanel();
JButton boutonOui = new JButton("Oui");
JButton boutonNon = new JButton("Non");
panneauBoutons.add(boutonOui);
panneauBoutons.add(boutonNon);
dialogue.add(message, BorderLayout.CENTER);
dialogue.add(panneauBoutons, BorderLayout.SOUTH);
boutonOui.addActionListener(ev -> System.exit(0));
boutonNon.addActionListener(ev -> dialogue.dispose());
dialogue.setSize(300, 150);
dialogue.setLocationRelativeTo(this);
dialogue.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
GalerieSimple fenetre = new GalerieSimple();
fenetre.setVisible(true);
});
}
}