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

 public class Applet extends JApplet
 {
   public void init()
   {
     Container cp = getContentPane();
  //   cp.add(BorderLayout.NORTH, new JButton("North"));
     cp.add(BorderLayout.SOUTH, new Tekstas());
     cp.add(BorderLayout.EAST, new Grid());
     cp.add(BorderLayout.WEST, new Flow());
    cp.add(BorderLayout.CENTER, new Paint());
  }
}

 class Flow extends JPanel
{
    Flow()
    {
        setLayout(new FlowLayout());
        for (int i = 1; i < 11; i++)
            add(new JButton("" + i));
    }
}

 class Grid extends JPanel
{
    Grid()
    {
        setLayout(new GridLayout(9,1));
        for (int i = 1; i < 11; i++)
            add(new JButton("" + i));
    }
}

class Paint extends Component
{
    public void paint(Graphics g)
    {
        g.setColor(new Color (0, 255, 0));
        g.drawRect(10,10,250,250);
        g.setColor(new Color(255, 0, 0));
        g.drawLine(10,10,260,260);
        g.drawLine(10, 260, 260, 10);
        g.setColor(new Color(0, 0, 255));
        g.drawOval(10, 10 , 250, 250);
    }
}

class Tekstas extends JPanel
{
    Tekstas()
    {
        final JTextField txt = new JTextField(25);    /*With a primitive, final makes the value a  constant, but with
                                                        an object reference, final makes the reference a constant.*/
        final JButton button = new JButton("Mygtukas");
        //---------------------------------------------------------
        ComponentAdapter ca = new ComponentAdapter()
        {
            public void componentMoved(ComponentEvent e)
            {
                txt.setText("Pajudintas");
            }
            public void componentResized(ComponentEvent e)
            {
                txt.setText("Pakeistas dydis");
            }
        };
        //---------------------------------------------------------
        MouseAdapter ma = new MouseAdapter()
        {
            public void mouseClicked(MouseEvent e)
            {
                txt.setText("Paspausta pele");
            }
            public void mousePressed(MouseEvent e)
            {
                txt.setText("Neatleistas peles mygtukas");
            }
        };
        //---------------------------------------------------------
        MouseMotionAdapter mm = new MouseMotionAdapter()
        {
            public void mouseDragged(MouseEvent e)
            {
               txt.setText("Pele patempta");
            }
            public void mouseMoved(MouseEvent e)
            {
                txt.setText("Pajudinta pele");
            }
        };
        button.addComponentListener(ca);
        button.addMouseListener(ma);
        button.addMouseMotionListener(mm);
        add(txt);
        add(button);
    }
}