package fr.iutfbleau.projet; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.URL; public class AppGalerie extends JFrame implements MouseListener { // 1) Chemins DANS LE JAR (=> classpath) private String[] listeImage = { "images/image1.png", "images/image2.png", "images/image4.png" }; private int indexImage = 0; private JPanel panneau = new JPanel(new BorderLayout()); private JLabel etiquetteImage = new JLabel(); public AppGalerie() { super("Confirmation"); etiquetteImage.setHorizontalAlignment(SwingConstants.CENTER); etiquetteImage.setIcon(chargerIcone(listeImage[indexImage])); // <-- ICI panneau.add(etiquetteImage, BorderLayout.CENTER); panneau.addMouseListener(this); setContentPane(panneau); setSize(800, 600); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // === MouseListener === @Override public void mouseClicked(MouseEvent e) { int largeurPanel = panneau.getWidth(); if (e.getX() >= largeurPanel / 2) imageSuivante(); else imagePrecedente(); } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} // === Navigation === private void imageSuivante() { indexImage = (indexImage + 1) % listeImage.length; etiquetteImage.setIcon(chargerIcone(listeImage[indexImage])); // <-- ICI } private void imagePrecedente() { indexImage = (indexImage - 1 + listeImage.length) % listeImage.length; etiquetteImage.setIcon(chargerIcone(listeImage[indexImage])); // <-- ICI } // === CHARGEMENT VIA CLASSPATH === private ImageIcon chargerIcone(String cheminDansJar) { URL url = getClass().getClassLoader().getResource(cheminDansJar); if (url == null) { // debug utile si un nom est faux throw new IllegalArgumentException("Ressource introuvable: " + cheminDansJar); } return new ImageIcon(url); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new AppGalerie().setVisible(true)); } }