import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
/**
 *
 * Beschreibung
 *
 * @version 1.0 vom 15.07.2006
 * @author Ralf Grießmann
 */
public class klassen1 extends JApplet {
    // Anfang Variablen
 
    // :o) Konstanten
 
        URL urlCodeAusfuehrungspfad;
    // URL für den Applet-Ausführungspfad
 
        static int offsetX = 100;
        static int offsetY = 10;
        static int step = 50;
        static int felder = 10;
        private Container cp;
        private JButton jButtonAuf = new JButton();
        private JButton jButtonLi = new JButton();
        private JButton jButtonRe = new JButton();
        private JButton jButtonAb = new JButton();
        private JLabel jLabel1 = new JLabel();
        private clsKuhCanvas kuh;
        private Image bg;
        private JScrollPane jScrollPanejTextArea1 = new JScrollPane();
    // Ende Variablen
 
        public void init() {
                urlCodeAusfuehrungspfad = getCodeBase();
                URL imgUrl = null;
                cp = getContentPane();
                cp.setLayout(null);
                cp.setBounds(0, 0, 800, 600);
        // Anfang Komponenten
 
                jButtonAuf.setBounds(32, 8, 25, 25);
        // :o) Einen Pfeil zeigen, der im Unterverzeichnis 'img' liegt.
 
                jButtonAuf.setIcon(new ImageIcon(getClass().getResource("img/pfeil_auf.gif")));
                cp.add(jButtonAuf);
                jButtonAuf.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                                jButtonAufActionPerformed(evt);
                        }
                }
               );
                jButtonLi.setBounds(8, 32, 25, 25);
        // :o) Einen Pfeil zeigen, der im Unterverzeichnis 'img' liegt.
 
                jButtonLi.setIcon(new ImageIcon(getClass().getResource("img/pfeil_li.gif")));
                cp.add(jButtonLi);
                jButtonLi.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                                jButtonLiActionPerformed(evt);
                        }
                }
               );
                jButtonRe.setBounds(56, 32, 25, 25);
        // :o) Einen Pfeil zeigen, der im Unterverzeichnis 'img' liegt.
 
                jButtonRe.setIcon(new ImageIcon(getClass().getResource("img/pfeil_re.gif")));
                cp.add(jButtonRe);
                jButtonRe.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                                jButtonReActionPerformed(evt);
                        }
                }
               );
                jButtonAb.setBounds(32, 56, 25, 25);
        // :o) Einen Pfeil zeigen, der im Unterverzeichnis 'img' liegt.
 
                jButtonAb.setIcon(new ImageIcon(getClass().getResource("img/pfeil_ab.gif")));
                cp.add(jButtonAb);
                jButtonAb.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                                jButtonAbActionPerformed(evt);
                        }
                }
               );
                jLabel1.setBounds(offsetX - 5, offsetY - 5,
                                 felder * step + 10, felder * step + 10);

                jLabel1.setBorder(BorderFactory.createLineBorder(Color.black));
                cp.add(jLabel1);
        // :o) Eine Kuh zeigen, der im Unterverzeichnis 'img' liegt.
 
                kuh = new clsKuhCanvas(urlCodeAusfuehrungspfad,
                                 "img/kuh_re.gif");

                cp.add(kuh);
        // // Ende Komponenten
 
        // :o) feld zeichen
 
        // Ein Array vom Typ unserer Kästchenklasse 'clsFeldCanvas' deklarieren.
 
        // Das Array ist zweidimensional wie eine Tabelle aufgebaut und enthält 10 Spalten und 10 Zeilen
 
        // Jedes Kästchen wird in diesem Array gespeichert
 
                URL bildURL = null;
                try {
                        bildURL = new URL(urlCodeAusfuehrungspfad,
                                         "img/bg.gif");

                } catch (java.net.MalformedURLException e) {
                        System.out.println("Fehler: Falsch formulierte URL");
                }
        }
    // Anfang Ereignisprozeduren
 
        public void jButtonAufActionPerformed(ActionEvent evt) {
        // :o) Aufwärtslaufende Kuh, die im Unterverzeichnis 'img' liegt, mit Hilfe der Klassenmethode 'setImageKuh' zeigen. 'Repaint' zeichnet das Objekt neu.
 
                kuh.setImageKuh(urlCodeAusfuehrungspfad, "img/kuh_auf.gif");
                kuh.repaint();
        // :o) Die Kuh darf nicht aus der Koppel herausgehen
 
                if (kuh.getY() > offsetY) {
            // :o) Auf der Y-Achse verschieben
 
                        kuh.setLocation(kuh.getX(),kuh.getY() - step);
                }
        }
        public void jButtonLiActionPerformed(ActionEvent evt) {
        // :o) Linkslaufende Kuh, die im Unterverzeichnis 'img' liegt, mit Hilfe der Klassenmethode 'setImageKuh' zeigen. 'Repaint' zeichnet das Objekt neu.
 
                kuh.setImageKuh(urlCodeAusfuehrungspfad, "img/kuh_li.gif");
                kuh.repaint();
        // :o) Die Kuh darf nicht aus der Koppel herausgehen
 
                if (kuh.getX() > offsetX) {
            // :o) Auf der X-Achse verschieben
 
                        kuh.setLocation(kuh.getX() - step,kuh.getY());
                }
                kuh.repaint();
        }
        public void jButtonReActionPerformed(ActionEvent evt) {
        // :o) Rechtslaufende Kuh, die im Unterverzeichnis 'img' liegt, mit Hilfe der Klassenmethode 'setImageKuh' zeigen. 'Repaint' zeichnet das Objekt neu.
 
                kuh.setImageKuh(urlCodeAusfuehrungspfad, "img/kuh_re.gif");
                kuh.repaint();
        // :o) Die Kuh darf nicht aus der Koppel herausgehen
 
                if (kuh.getX() < (offsetX + (felder - 1) * step)) {
            // :o) Auf der X-Achse verschieben
 
                        kuh.setLocation(kuh.getX() + step,kuh.getY());
                }
        }
        public void jButtonAbActionPerformed(ActionEvent evt) {
        // :o) Abwärtslaufende Kuh, die im Unterverzeichnis 'img' liegt, mit Hilfe der Klassenmethode 'setImageKuh' zeigen. 'Repaint' zeichnet das Objekt neu.
 
                kuh.setImageKuh(urlCodeAusfuehrungspfad, "img/kuh_ab.gif");
                kuh.repaint();
        // :o) Die Kuh darf nicht aus der Koppel herausgehen
 
                if (kuh.getY() < (offsetY + (felder - 1) * step)) {
            // :o) Auf der Y-Achse verschieben
 
                        kuh.setLocation(kuh.getX(),kuh.getY() + step);
                }
        }
    // Ende Ereignisprozeduren
 
    // Prozeduren
 
    // Ende Prozeduren
 
}
// :o) Benutzerdefinierte Klasse
class clsKuhCanvas extends Canvas {
    // Eigenschaft des Objektes 'imgKuh' deklarieren
 
        Image imgKuh;
        URL bildURL;
    // URL des Bildes
 
        clsKuhCanvas(URL urlCodeAusfuehrungspfad, String sImage) {
        // URL für die Thumbnail-Bilder erzeugen
 
                try {
                        bildURL = new URL(urlCodeAusfuehrungspfad, sImage);
                } catch (java.net.MalformedURLException e) {
                        System.out.println("Fehler: Falsch formulierte URL");
                }
        // Bild downloaden und speichern
 
                imgKuh = new ImageIcon(bildURL).getImage();
        // Einen Mausereignis-Lauscher erzeugen, der die Thumbnail-Auswahl empfängt.
 
                addMouseListener(new MouseEventHandler());
        // Thumbnailgröße festlegen
 
                this.setBounds(100,10,50,50);
        //setBackground(Color.white);
 
        }
    // :o) Methode, mit der die Eigenschaft des Objektes 'imgKuh' gesetzt wird
 
        public void setImageKuh(URL urlCodeAusfuehrungspfad, String sImage) {
                try {
                        bildURL = new URL(urlCodeAusfuehrungspfad, sImage);
                } catch (java.net.MalformedURLException e) {
                        System.out.println("Fehler: Falsch formulierte URL");
                }
        // Bild downloaden und speichern
 
                imgKuh = new ImageIcon(bildURL).getImage();
        }
    // :o) Methode, mit der die Eigenschaft des Objektes 'imgKuh' gelesen wird
 
        public Image getImageKuh() {
                return (imgKuh);
        }
    // :o) Methode, mit der die Eigenschaft des Objektes 'imgKuh' gezeichnet wird
 
        public void paint(Graphics g) {
                if (imgKuh != null) {
                        g.drawImage(imgKuh, 0, 0, this);
                }
        }
        class MouseEventHandler extends MouseAdapter {
                public void mouseClicked(MouseEvent evt) {
                }
        }
}
