import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class GridandCard extends JApplet   
{
 
	private Image [] image;
	private int index, max;
	IntroPanel firstpanel;
	MainPanel primary;
	ExitPanel byebye;
	private CardLayout cards;
	private Container c;

	public GridandCard ( )   
    	{
		index = 0;
		max = 5;
		image = new Image[max];
	}

	public void init ( )  
    	{
		c = this.getContentPane();

		for ( int i = 0; i < image.length; i++ )   
        	{
			image[i] = getImage ( getDocumentBase ( ), "pic" + i + ".jpg" );
			WaitForImage ( this, image[i] );
		}

		firstpanel = new IntroPanel ( image[2] );
		primary = new MainPanel();
		byebye = new ExitPanel ( image[4] );

		cards = new CardLayout ( );
		c.setLayout ( cards );

		c.add ( firstpanel, "First" );
		c.add ( primary, "Second" );
		c.add ( byebye, "Third" );

		getContentPane().setBackground( Color.blue );
	}

	public void WaitForImage ( JApplet component, Image image )   
    	{
		MediaTracker tracker = new MediaTracker ( component );
		try  
        	{
			tracker.addImage ( image, 0 );
			tracker.waitForID ( 0 );
		}
		catch ( InterruptedException e )   
        	{
			e.printStackTrace ( );   
		}
	}
	
	class IntroPanel extends JPanel implements MouseListener   
    	{
		private Image pict;

   		public IntroPanel ( Image im )   
        	{
			pict = im;
			addMouseListener(this);
		}

		public void paintComponent(Graphics g) 
        	{
			super.paintComponent ( g );
			g.drawImage ( pict, 0, 0, this );
		}

		public void mousePressed(MouseEvent evt) 
        	{
			cards.next ( c );
		}
		public void mouseEntered(MouseEvent evt) { }
		public void mouseExited(MouseEvent evt) { }
		public void mouseClicked(MouseEvent evt) { }
		public void mouseReleased(MouseEvent evt) { }
	}

	class MainPanel extends JPanel 
    	{

		private ImagePanel panel1;
		private BackPanel panel2;
		private ClickPanel panel3;
		private DrawPanel panel4;
	 
		public MainPanel ( )  
        	{
       		 	this.setLayout ( new GridLayout ( 2, 2, 5, 5 ) );
   
			panel1 = new ImagePanel ( );
			panel1.setBackground( Color.blue );
			this.add ( panel1 );

			panel2 = new BackPanel ( );
			panel2.setBackground( Color.red );
			this.add ( panel2 );

			panel3 = new ClickPanel ( );
			panel3.setBackground( Color.darkGray );
			this.add ( panel3 );	

			panel4 = new DrawPanel ( );
			panel4.setBackground( Color.lightGray );
			this.add ( panel4 );
		}
 
		class ImagePanel extends JPanel implements MouseListener 
        	{
			private Image [] image;
			private int value;

			public ImagePanel ( )   
            		{
				value = 0;
				image = new Image[5];		
				for ( int i = 0; i < image.length; i++ )   
                		{
					image[i] = getImage ( getCodeBase ( ), "pic" + i + ".jpg" );
					WaitForImage ( this, image[i] );
				}
				addMouseListener(this);
			}

			public void WaitForImage ( JPanel component, Image image )   
            		{
				MediaTracker tracker = new MediaTracker ( component );
				try  
                		{
					tracker.addImage ( image, 0 );
					tracker.waitForID ( 0 );
				}
				catch ( InterruptedException e )   
                		{
					e.printStackTrace ( );   
				}
			}

			public void paintComponent ( Graphics g ) 
            		{
				super.paintComponent ( g );
				g.drawImage ( image[value], 0, 0, getSize().width, getSize().height, this );
			}

			public void mousePressed ( MouseEvent e )   
            		{
				value++;
				if ( value == 5 )
					value = 0;
				repaint ( );
			}	

			public void mouseReleased ( MouseEvent e )    {}
			public void mouseClicked ( MouseEvent e )    {}
			public void mouseEntered ( MouseEvent e )    {}
			public void mouseExited ( MouseEvent e )    {}
		}
 
		class BackPanel extends JPanel implements MouseListener 
        	{	

			public BackPanel ( )   
            		{
				addMouseListener(this);
			}

			public void paintComponent ( Graphics g ) 
            		{
				super.paintComponent ( g );
			}

			public void mousePressed ( MouseEvent e )   
            		{
				cards.next ( c );
			}

			public void mouseReleased ( MouseEvent e )    {}
			public void mouseClicked ( MouseEvent e )    {}
			public void mouseEntered ( MouseEvent e )    {}
			public void mouseExited ( MouseEvent e )    {}
		}
 
		class ClickPanel extends JPanel implements MouseListener 
        	{
			private int x, y;
	
			public ClickPanel ( )   
            		{
				x = y = 0;
				addMouseListener(this);
			}

			public void paintComponent ( Graphics g ) 
            		{
				super.paintComponent ( g );
			}

			public void PlaceCircle ( Graphics g )   
            		{
				g.setColor ( Color.red );
				g.fillOval ( x - 15, y - 15, 30, 30 );
				g.setColor ( Color.black );
				g.drawOval ( x - 15, y - 15, 30, 30 );
			}

			public void mousePressed ( MouseEvent e )   
            		{
				x = e.getX ( );
				y = e.getY ( );
				Graphics gr = getGraphics ( );
				PlaceCircle ( gr );
			}

			public void mouseReleased ( MouseEvent e )    {}
			public void mouseClicked ( MouseEvent e )    {}
			public void mouseEntered ( MouseEvent e )    {}
			public void mouseExited ( MouseEvent e )    {}
		}
 
		class DrawPanel extends JPanel implements MouseListener, MouseMotionListener 
        	{
			private int x, y, oldx, oldy;

			public DrawPanel ( )   
            		{
				x = y = oldx = oldy = 0;
				addMouseListener(this);
				addMouseMotionListener(this);
			}

			public void paintComponent ( Graphics g ) 
            		{
				super.paintComponent ( g );
			}

			public void DrawIt ( Graphics g )   
            		{
				g.setColor ( Color.black );
				g.drawLine ( x, y, oldx, oldy );
				oldx = x;
				oldy = y;
			}

			public void mousePressed ( MouseEvent e )   
            		{
				x = oldx = e.getX ( );
				y = oldy = e.getY ( );
				Graphics gr = getGraphics ( );
				DrawIt ( gr );
			}

			public void mouseReleased ( MouseEvent e )    {}
			public void mouseClicked ( MouseEvent e )    {}
			public void mouseEntered ( MouseEvent e )    {}
			public void mouseExited ( MouseEvent e )    {}	
			public void mouseMoved ( MouseEvent e )    {}

			public void mouseDragged ( MouseEvent e )    
            		{
				x = e.getX ( );
				y = e.getY ( );
				Graphics gr = getGraphics ( );
				DrawIt ( gr );
			}
		}
	}
	
	class ExitPanel extends JPanel implements ActionListener   
    	{
		private Image pict;

   		public ExitPanel ( Image im )   
        	{
			pict = im;		
			setBackground ( Color.red );
       
       			JButton reset = new JButton ( "RESET" );
       			reset.addActionListener ( this );  
       			this.add ( reset );
		}

		public void paintComponent(Graphics g) 
        	{
			super.paintComponent ( g );
			g.drawImage ( pict, 0, 0, this );
		}

   		public void actionPerformed ( ActionEvent evt ) 
        	{
      			String command = evt.getActionCommand();
               
      			if ( command.equals ( "RESET" ) )
 	        		cards.first ( c );
   		}
	}
}

Back to Lesson 29 Examples

Back to Java Main Page