package Bounce; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; /** * Frame cu panel pentru afisarea bilei si butoanelor Start si Close * @author Dan * */ public class BounceFrame extends JFrame { /** * */ private static final long serialVersionUID = 1L; public BounceFrame() { setSize(WIDTH, HEIGHT); setTitle("Bounce"); panel = new BallPanel(); add(panel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); addButton(buttonPanel,"Start",new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub addBall(); } }); addButton(buttonPanel,"Cancel",new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub System.exit(0); } }); add(buttonPanel, BorderLayout.SOUTH); } /** * Adaugarea butonului la container * @param c Container * @param title Titlu * @param listner Listner */ public void addButton(Container c,String title,ActionListener listner) { JButton button = new JButton(title); c.add(button); button.addActionListener(listner); } /** * Pornirea Bilei in continutul panelului si organizarea lui in 1000 de miscari */ public void addBall() { try { Ball ball = new Ball(); panel.add(ball); for(int i = 1; i<=STEPS;i++) { ball.move(panel.getBounds()); panel.paint(panel.getGraphics()); Thread.sleep(DELAY); } } catch (InterruptedException e) { } } private BallPanel panel; public static final int WIDTH = 450; public static final int HEIGHT = 350; public static final int STEPS = 1000; public static final int DELAY = 3; }