import java.applet.Applet ;
import java.awt.Graphics ;
import java.awt.Graphics2D ;
import javax.swing.JOptionPane ; 
import java.awt.Rectangle ;

/** ein Applet zur Darstellung einer Multiplikationstabelle
 * 
 * @author Jan Johannsen
 * @version 0.1
 */
public class Tabelle extends Applet
{

    /** Der aktuelle Grafikkontext. Wird bei jedem paint neu gesetzt. */
    private Graphics2D g2; 

    private final int OFFSET = 5 ; 
    private final int RAND = 20 ; 
    private final int GROESSE = 9;
     
  

     /** Zeichnet die Tabelle */
    public void paint(Graphics g)
    {
	/* Speichern des Grafikkontext */
	g2 = (Graphics2D)g; 


	int hoehe = getHeight() ;
	int breite = getWidth() ; 
 
        int zeilenHoehe = (hoehe - 2*RAND)/(GROESSE+1) ; 
	int spaltenBreite = (breite - 2*RAND)/(GROESSE+1) ;  

	g2.draw(new Rectangle(RAND,RAND,spaltenBreite,zeilenHoehe) ) ;
	g2.draw(new Rectangle(RAND,RAND+zeilenHoehe,spaltenBreite,GROESSE*zeilenHoehe) ) ;
	g2.draw(new Rectangle(RAND+spaltenBreite,RAND,GROESSE*spaltenBreite,zeilenHoehe) );
	g2.draw(new Rectangle(RAND+spaltenBreite,RAND+zeilenHoehe,GROESSE*spaltenBreite,GROESSE*zeilenHoehe) ) ;

	int xPos = RAND + 3*spaltenBreite/2 - OFFSET ; 
	int yPos = RAND + zeilenHoehe/2 + OFFSET ;
	for ( int i=1 ; i<=GROESSE ; i++ )     
	    {
		g2.drawString( ""+i , xPos , yPos ) ;
		xPos += spaltenBreite ; 
 	    }   
        xPos = RAND + spaltenBreite/2 - OFFSET ; 
	yPos = RAND + 3*zeilenHoehe/2 + OFFSET ; 
	for ( int i=1 ; i<=GROESSE ; i++ ) 
	    { 
		g2.drawString( ""+i , xPos , yPos ) ;
		yPos += zeilenHoehe ;  
	    } 
	xPos = RAND + 3*spaltenBreite/2 - OFFSET ; 
	yPos = RAND + 3*zeilenHoehe/2 + OFFSET ;     
	for ( int i=1 ; i<=GROESSE ; i++ ) 
	    {
		int xPosLaufend = xPos + (i-1) * spaltenBreite ; 
		for ( int j=i ; j<=GROESSE ; j++ ) 
		    {
			g2.drawString( ""+(i*j) , xPosLaufend , yPos ) ; 
			xPosLaufend += spaltenBreite ; 
		    }
		yPos += zeilenHoehe ; 
	    }
    }
}
