// <pre>

// Fail JRakend.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * Juhuslikud ringid.
 * @author Jaanus Poial
 * @version 0.2
 * @since 1.2
 */
public class JRakend extends JApplet {

   /** Peameetod rakenduse jaoks, mis omakorda ka"ivitab rakendi.
    */
   public static void main (String[] parameetrid) {

      // konteiner graafikaelementide paigutamiseks
      JFrame raam = new JFrame ("Juhuslikud ringid");

      // JApplet isend (rakend) sinna raami sisse panemiseks
      JRakend rakend = new JRakend();

      // raami suuruse m22ramine
      raam.setSize (210, 230); // ca 200x200 sisu jaoks

      // rakendi paigutamine raami sisse
      raam.getContentPane().add (rakend); // swing erip2ra

      // p66rdume rakendi initsialiseerimiseks
      rakend.init();

      // p66rdume rakendi k2ivitamiseks
      rakend.start();

      // raami ekraaniletoomine
      raam.setVisible (true);

      // raami k2itumise kirjeldus (kuidas reageerib syndmustele)
      raam.addWindowListener (new WindowAdapter() {
         public void windowClosing (WindowEvent e) {
            ((JRakend)
               ((JFrame)e.getWindow()).getContentPane().getComponent (0)).
               stop();
            ((JRakend)
               ((JFrame)e.getWindow()).getContentPane().getComponent (0)).
               destroy();
            ((JFrame)e.getWindow()).dispose();
         }
         public void windowActivated (WindowEvent e) {
            e.getWindow().repaint();
         }
      } );
   } // main
   
   /** Rakendi initsialiseerimine (yks kord alguses).
    */
   public void init() {
      Container sisu = getContentPane();
      sisu.setLayout (new BorderLayout());
      JPanel tahvel = new JPanel();
      sisu.add (tahvel, BorderLayout.CENTER);
      JButton nupp = new JButton ("Uus ring");
      sisu.add (nupp, BorderLayout.SOUTH);
      nupp.addActionListener (new ActionListener() {
         public void actionPerformed (ActionEvent e) {
            JRakend see = (JRakend)((JRootPane)(((JLayeredPane)(((JPanel)
               (((JButton)e.getSource()).getParent())).getParent())).
               getParent())).getParent();
            see.repaint();
         } // actionPerformed lopp
      } // kuulariklassi lopp
      );
   } // init

   /** Rakendi aktiviseerimisel t2idetakse see meetod. */
   public void start() {
   } // start

   /** Rakendi passiivseks muutumisel t2idetakse see meetod. */
   public void stop() {
   } // stop

   /** Rakendi h2vitamisel saab clean-up teha selles meetodis. */
   public void destroy() {
   } // destroy

   /** Tegelik joonistamine.
    */
   public void paint (Graphics g) {

      // Kui rakendit kasutada konteinerina, siis peab komponendid renderdama
      paintComponents (g);

      // Esimesena pandi init-meetodis paika JPanel
      JPanel tahvel = (JPanel)getContentPane().getComponent (0);
      int laius = tahvel.getWidth();
      int korgus = tahvel.getHeight();
      Graphics gk = tahvel.getGraphics();

      int x, y, r;
      x = (int)(Math.random()*laius);
      y = (int)(Math.random()*korgus);
      r = (int)(Math.random()*
         Math.min (Math.min (x, y), Math.min (laius-x, korgus-y)));

      // joonistame ringi sisemise JPanel peale
      gk.fillOval (x-r, y-r, 2*r, 2*r);
   } // paint

   private static final long serialVersionUID = -8564370944529496313L;
   
} // JRakend lopp

// faili l6pp

// </pre>

