import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Fenetre extends JFrame{ private Panneau pan = new Panneau(); private JButton bouton = new JButton("Go"); private JButton bouton2 = new JButton("Stop"); private JPanel container = new JPanel(); private JLabel label = new JLabel("Choix de la forme"); private int compteur = 0; private boolean animated = true; private boolean backX, backY; private int x, y; private Thread t; private JComboBox combo = new JComboBox(); public Fenetre(){ this.setTitle("Animation"); this.setSize(300, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); container.setBackground(Color.white); container.setLayout(new BorderLayout()); container.add(pan, BorderLayout.CENTER); bouton.addActionListener(new BoutonListener()); bouton2.addActionListener(new Bouton2Listener()); bouton2.setEnabled(false); JPanel south = new JPanel(); south.add(bouton); south.add(bouton2); container.add(south, BorderLayout.SOUTH); combo.addItem("ROND"); combo.addItem("CARRE"); combo.addItem("TRIANGLE"); combo.addItem("ETOILE"); combo.addActionListener(new FormeListener()); JPanel top = new JPanel(); top.add(label); top.add(combo); container.add(top, BorderLayout.NORTH); this.setContentPane(container); this.setVisible(true); } private void go(){ x = pan.getPosX(); y = pan.getPosY(); while(this.animated){ if(x < 1) backX = false; if(x > pan.getWidth() - 50) backX = true; if(y < 1) backY = false; if(y > pan.getHeight() - 50) backY = true; if(!backX) pan.setPosX(++x); else pan.setPosX(--x); if(!backY) pan.setPosY(++y); else pan.setPosY(--y); pan.repaint(); try { Thread.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } } //Classe écoutant notre bouton public class BoutonListener implements ActionListener{ public void actionPerformed(ActionEvent arg0) { animated = true; t = new Thread(new PlayAnimation()); t.start(); bouton.setEnabled(false); bouton2.setEnabled(true); } } class Bouton2Listener implements ActionListener{ public void actionPerformed(ActionEvent e) { animated = false; bouton.setEnabled(true); bouton2.setEnabled(false); } } class PlayAnimation implements Runnable{ public void run() { go(); } } class FormeListener implements ActionListener{ public void actionPerformed(ActionEvent e) { //La méthode retourne un Object puisque nous passons des Object dans une liste //Il faut donc utiliser la méthode toString() pour retourner un String (ou utiliser un cast) pan.setForme(combo.getSelectedItem().toString()); } } }