package animationPersonnages; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import javax.swing.JButton; import javax.swing.JPanel; import personnages.Personnage; class DessinUnPersonnage extends JPanel { private IHMUnPersonnage panneau; private static final long serialVersionUID = 1L; DessinUnPersonnage(IHMUnPersonnage panneau) { this.panneau = panneau; setPreferredSize(new Dimension(600, 400)); } public void paintComponent(Graphics g) { super.paintComponent(g); if (panneau.getPersonnage() != null) panneau.getPersonnage().dessiner(g); } } public class IHMUnPersonnage extends JPanel implements ActionListener, ComponentListener { private static final long serialVersionUID = 1L; private JButton creer = new JButton("creer"); private JButton demarrer = new JButton("demarrer"); private JButton suspendre = new JButton("suspendre"); private JButton reprendre = new JButton("reprendre"); private JButton stopper = new JButton("stopper"); private Class classe; private Personnage personnage; public Personnage getPersonnage() { return personnage; } private DessinUnPersonnage dessinUnPersonnage; public DessinUnPersonnage getDessinUnPersonnage() { return dessinUnPersonnage; } public IHMUnPersonnage(Class classe) { this.classe = classe; setBackground(Color.WHITE); setLayout(new BorderLayout(5, 5)); JPanel panneauBoutons = new JPanel(); panneauBoutons.add(creer); panneauBoutons.add(demarrer); panneauBoutons.add(suspendre); panneauBoutons.add(reprendre); panneauBoutons.add(stopper); add(panneauBoutons, BorderLayout.NORTH); dessinUnPersonnage = new DessinUnPersonnage(this); add(dessinUnPersonnage, BorderLayout.CENTER); addComponentListener(this); creer.addActionListener(this); demarrer.addActionListener(this); suspendre.addActionListener(this); reprendre.addActionListener(this); stopper.addActionListener(this); } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == creer) { Rectangle rectangle = getBounds(); try { if (personnage != null) personnage.supprimer(); personnage = (Personnage)classe.newInstance(); personnage.initialiser(this, rectangle.width / 4, 2 * rectangle.height / 3, 50, Color.RED, true); repaint(); } catch (Exception exc) { exc.printStackTrace(); } } else if (evt.getSource() == demarrer) { if (personnage != null) personnage.demarrer(); } else if (evt.getSource() == suspendre) { if (personnage != null) personnage.suspendre(); } else if (evt.getSource() == reprendre) { if (personnage != null) personnage.reprendre(); } else if (evt.getSource() == stopper) { if (personnage != null) personnage.stopper(); } } public void componentMoved(ComponentEvent evt) {} public void componentHidden(ComponentEvent evt) {} public void componentResized(ComponentEvent evt) { if (personnage != null) personnage.setY(2 * getBounds().height / 3); } public void componentShown(ComponentEvent evt) {} }