# 4-Gewinnt als Applet



## flipperweid (15. Nov 2010)

Hi,
also zunächst mal: Ich habe lange bei google gesucht (vllt. bin ich ein schlechter sucher) und nichts passendes gefunden.
Also ich habe 4-Gewinnt mit Oberfläche programmiert. War ziemlich aufwendig. Habe es mir auch höchst wahrscheinlich komplizierter gemacht als es ist. Tut aber ja auch nichts zur Sache, das Prog läuft.
Ich würde es bloß gerne als Applet auf meine Homepage tun, damit auch andere den Spaß an diesem Spiel genießen können
Ich habe oft gelesen, dass dazu die Klasse von der Klasse Applets erben muss. Geht aber nicht, weil meine schon von der Klasse "Frame" erbt.
Hab einfach keine ahunng vllt. kann es mir jmd. mit ein paar wenigen schritten machen oder erklären.
Danke im Voraus!
PS: Quellcode könnt ihr gerne verwenden (ist nicht der beste, ich weiß)


```
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;

public class viergewinntgraphik extends Frame implements ActionListener {
    public static char felder[][] = new char[6][7];
    public static int reihe;
    public static int spieler = 1;
    public static String spielername1 = "Spieler 1", spielername2 = "Spieler 2";
    static boolean win = false;
    static int unentschieden = 0;
    static int spieler1 = 0;
    static int spieler2 = 0;
    //***********************GRAFIKEN ERSTELLEN*************************************************
    static Button put1, put2, put3, put4, put5, put6, put7, nochmalbtn;
    static Label spielerlbl, statistiklbl, spieler1lbl, spieler2lbl, unentschiedenlbl;
    static TextField name1lbl, name2lbl;
    public viergewinntgraphik() {
        setLayout(null);
        spielerlbl = new Label("Spieler 1, sie sind an der Reihe!");
        statistiklbl = new Label("Statistiken: ");
        spieler1lbl = new Label(spielername1 + ": " + spieler1);
        spieler2lbl = new Label(spielername2 + ": " + spieler2);
        name1lbl = new TextField("Name Spieler1");
        name2lbl = new TextField("Name Spieler2");
        unentschiedenlbl = new Label("Unentschieden: " + unentschieden);
        put1 = new Button("Put");
        put2 = new Button("Put");
        put3 = new Button("Put");
        put4 = new Button("Put");
        put5 = new Button("Put");
        put6 = new Button("Put");
        put7 = new Button("Put");
        nochmalbtn = new Button("Nochmal?");
        spielerlbl.setForeground(Color.red);
        spieler1lbl.setForeground(Color.red);
        spieler2lbl.setForeground(Color.blue);
        //setze Koordinaten
        name1lbl.setBounds(350, 715, 200, 30);
        name2lbl.setBounds(350, 755, 200, 30);
        spielerlbl.setBounds(105, 725, 300, 50);
        statistiklbl.setBounds(605, 705, 200, 20);
        spieler1lbl.setBounds(605, 725, 200, 20);
        spieler2lbl.setBounds(605, 750, 200, 20);
        unentschiedenlbl.setBounds(605, 775, 200, 20);
        put1.setBounds(105, 50, 95, 40);
        put2.setBounds(205, 50, 95, 40);
        put3.setBounds(305, 50, 95, 40);
        put4.setBounds(405, 50, 95, 40);
        put5.setBounds(505, 50, 95, 40);
        put6.setBounds(605, 50, 95, 40);
        put7.setBounds(705, 50, 95, 40);
        nochmalbtn.setBounds(205, 725, 100, 50);
        //registriere Buttons
        add(name1lbl);
        add(name2lbl);
        add(spielerlbl);
        add(statistiklbl);
        add(spieler1lbl);
        add(spieler2lbl);
        add(unentschiedenlbl);
        add(put1);
        add(put2);
        add(put3);
        add(put4);
        add(put5);
        add(put6);
        add(put7);
        add(nochmalbtn);
        put1.addActionListener(this);
        put2.addActionListener(this);
        put3.addActionListener(this);
        put4.addActionListener(this);
        put5.addActionListener(this);
        put6.addActionListener(this);
        put7.addActionListener(this);
        nochmalbtn.addActionListener(this);
        put1.setActionCommand("eins");
        put2.setActionCommand("zwei");
        put3.setActionCommand("drei");
        put4.setActionCommand("vier");
        put5.setActionCommand("fünf");
        put6.setActionCommand("sechs");
        put7.setActionCommand("sieben");
        nochmalbtn.setActionCommand("nochmal");
        spielerlbl.setVisible(false);
        nochmalbtn.setLabel("Ok");
        buttonsschalten(0);
    }

    public void actionPerformed(ActionEvent e) { //BUTTONEVENTS******************

        if (e.getActionCommand().equals("nochmal")) {
            if (nochmalbtn.getLabel().equals("Ok")) {  //Namenseingabe

                spielername1 = name1lbl.getText();
                spielername2 = name2lbl.getText();
                spieler1lbl.setText(spielername1 + ": ");
                spieler2lbl.setText(spielername2 + ": ");
                name1lbl.setVisible(false);
                name2lbl.setVisible(false);
                spielerlbl.setVisible(true);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                buttonsschalten(1);
                nochmalbtn.setVisible(false);
                nochmalbtn.setLabel("Nochmal?");
                nochmalbtn.setBounds(450, 725, 100, 50);

            } else { //Neues Spiel wird vorbereitet
                buttonsschalten(1);
                spielerlbl.setForeground(Color.red);
                win = false;
                spieler = 1;
                //Spielfelderstellen;
                for (int i = 0; i < 6; i++) {
                    for (int j = 0; j < 7; j++) {
                        felder[i][j] = '|';
                    }
                }
                repaint(); //leeres Spielfeld neu zeichnen
                nochmalbtn.setVisible(false);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe.");

            }
        } else {
            if (e.getActionCommand().equals("eins")) {
                reihe = 1;
                
            }
            if (e.getActionCommand().equals("zwei")) {
                reihe = 2;
                
            }
            if (e.getActionCommand().equals("drei")) {
                reihe = 3;
                
            }
            if (e.getActionCommand().equals("vier")) {
                reihe = 4;
                
            }
            if (e.getActionCommand().equals("fünf")) {
                reihe = 5;
                
            }
            if (e.getActionCommand().equals("sechs")) {
                reihe = 6;
                
            }
            if (e.getActionCommand().equals("sieben")) {
                reihe = 7;

            }
            boolean besetzt = false;
            boolean gesetzt = false;
            int j = reihe - 1;
            for (int i = 5; i >= 0; i--) {
                besetzt = false;
                if (felder[i][j] == '|') { //wenn Feld Leer
                    switch (spieler) {
                        case 1:
                            felder[i][j] = 'R'; //setze R
                            System.out.println(spielername1 + ", setzt roten Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;
                                
                            }
                            break;
                        case 2:
                            felder[i][j] = 'B'; //setze B
                            System.out.println(spielername2 + " setzt blauen Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;
                                
                            }
                            break;
                    }//switch
                    gesetzt = true;
                } //ende if abfrage
                if (gesetzt == true) {
                    break;
                    
                }
            } //ende for schleife

            if (besetzt == true) {
                switch (reihe) {
                    case 1:
                        put1.setEnabled(false);
                        break;
                    case 2:
                        put2.setEnabled(false);
                        break;
                    case 3:
                        put3.setEnabled(false);
                        break;
                    case 4:
                        put4.setEnabled(false);
                        break;
                    case 5:
                        put5.setEnabled(false);
                        break;
                    case 6:
                        put6.setEnabled(false);
                        break;
                    case 7:
                        put7.setEnabled(false);
                        break;
                }
            }
            ////****Abfragen nach Ergebnisende!
            if (pruefen().compareTo("voll") == 0) {
                System.out.println("Spielfeld ist voll, niemand hat gewonnen!");
                spielerlbl.setText("Ein Unentschieden!");
                win = true;
                unentschieden += 1;
            }
            if (pruefen().compareTo("spieler1") == 0) {
                System.out.println(spielername1 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername1 + " gewinnt!");
                win = true;
                spieler1 += 1;
            }
            if (pruefen().compareTo("spieler2") == 0) {
                System.out.println(spielername2 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername2 + " gewinnt!");
                win = true;
                spieler2 += 1;
            }
            if (win == true) {
                buttonsschalten(0);
                System.out.println(spielername1 + "(Rot) hat bisher " + spieler1 + " mal gewonnen");
                spieler1lbl.setText(spielername1 + ":            " + spieler1);
                System.out.println();
                System.out.println(spielername2 + "(Blau) hat bisher " + spieler2 + " mal gewonnen");
                spieler2lbl.setText(spielername2 + ":            " + spieler2);
                System.out.println();
                System.out.println("Es gab bisher " + unentschieden + " unentschieden");
                unentschiedenlbl.setText("Unentschieden: " + unentschieden);
                System.out.println();
                nochmalbtn.setVisible(true);
                
                repaint();
                
            } else { //wenn nicht zuende

                repaint();
                if (spieler == 1) {
                    spieler = 2; //spielerwechsel
                    spielerlbl.setText(spielername2 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.blue);
                } else if (spieler == 2) {
                    spieler = 1;
                    spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.red);
                }
            }
        }
    }

    public void paint(Graphics g) {
        //*************Viergewinntfeldzeichnen!***********************************
        g.setColor(Color.black);
        
        for (int i = 100; i <= 800; i += 100) {
            g.drawLine(i, 700, i, 100);
        }
        for (int i = 700; i >= 0; i -= 100) {
            g.drawLine(800, i, 100, i);
        }
        for (int i = 100; i < 800; i+=100) {
        g.drawArc(i, 100, 100, 10, 0, 360);
            }
        //***************Spielsteine setzen**************************************
        for (int i = 0; i < 6; i++) {
            for (int k = 0; k < 7; k++) { //geht alle Felder einmal durch!
                if (felder[i][k] == 'R') { //wenn RoterStein
                    g.setColor(Color.red);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                } //ende Rot
                else if (felder[i][k] == 'B') {//wenn BlauerStein
                    g.setColor(Color.blue);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                }//ende Blau
            }
        }
    }

    public static void buttonsschalten(int binaer) {
        switch (binaer) {
            case 0:
                put1.setEnabled(false);
                put2.setEnabled(false);
                put3.setEnabled(false);
                put4.setEnabled(false);
                put5.setEnabled(false);
                put6.setEnabled(false);
                put7.setEnabled(false);
                break;
            case 1:
                put1.setEnabled(true);
                put2.setEnabled(true);
                put3.setEnabled(true);
                put4.setEnabled(true);
                put5.setEnabled(true);
                put6.setEnabled(true);
                put7.setEnabled(true);
                break;
        }
    }

    public static void main(String[] args) throws IOException {
        viergewinntgraphik frm = new viergewinntgraphik();
        frm.setSize(900, 800);
        frm.setVisible(true);
        WindowQuitter wquit = new WindowQuitter();
        frm.addWindowListener(wquit);

        //Spielfelderstellen;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                felder[i][j] = '|';
            }
        }
        frm.setResizable(false);
    }

//**********************PRÜFEN*************************************************************
    public static String pruefen() {
        String gewinnnachricht = "weiter";
        char player = 'R';
        switch (spieler) {
            case 1:
                player = 'R';
                break;
            case 2:
                player = 'B';
                break;
        }
        int anzahl = 0;
        //*******WAAGERECHT
        //***** Spieler gewonnen 1 waagerecht? ****
        int zaehler = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != i) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;

                        
                    }
                } else {
                    anzahl = 0;

                }
                zaehler = i;
            }
        }
        ////////////**SENKRECHT
        //***** Spieler gewonnen 1 senkrecht? ****
        anzahl = 0;
        for (int j = 0; j < 7; j++) {
            for (int i = 0; i < 6; i++) {

                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != j) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;

                        
                    }
                } else {
                    anzahl = 0;

                }
                zaehler = j;
            }
        }
//*********************************Spiele gewonnen Diagonal************************
//Oben Links nach Unten Rechts!!
        anzahl = 0;
        int k = 0;
        for (int i = 2; i < 6; i++) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 1; i < 6; i++) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 0; i < 5; i++) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 0; i < 4; i++) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

        //Unten Links nach Oben Rechts!!!****************
        anzahl = 0;
        k = 0;
        for (int i = 3; i >= 0; i--) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 4; i >= 0; i--) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 5; i >= 1; i--) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 5; i >= 2; i--) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

//*********Feld voll?*******
        anzahl = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] != '|') { //
                    anzahl += 1; //zählt unbesetzte felder
                    if (anzahl == 42) { //wenn alle felder besetzt sind
                        return gewinnnachricht = "voll";
                    }
                } //ende if abfrage feld leer
            } //ende j for schleife
        } // ende i for schleife

        return gewinnnachricht;
    }
}

class WindowQuitter extends WindowAdapter {

    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}
```


----------



## Michael... (15. Nov 2010)

Grundsätzlich könnte man den ContentPane des JFrames holen und ins JApplet packen.

Allerdings bietet auch eine Neuprogrammierung die Möglichkeit alten Code zu optimieren ;-)

Wenn Du zukünftig nicht direkt von JFrame erbst, sondern von JPanel o.ä. ist es einfacher die Applikation als JFrame und/oder als JApplet anzubieten.


----------



## flipperweid (15. Nov 2010)

Vielen dank für deine schnelle Antwort Michael.
Neuprogrammierung möchte ich vorerst ausschließen, da ich einfach kein bock habe
Würde es also exakt so wie es jetzt ist, auf meine HP hauen.
Ich verstehe deinen Lösungsansatz nicht ganz.
Was meinst du mit "ContentPane des JFrames holen"? und ins "JApplet" packen?
Ich weiß, ich hab noch einiges zu lernen
Meinst du das JFrames von JApplet erben soll? Vllt. durch überladen? (geht nicht bei Klassen oder?)
Kannst du mir vllt. ein beispiel machen, für doofe


----------



## Michael... (15. Nov 2010)

Du erzeugst in der init() des JApplet ein Objekt Deines JFrames und holst Dir über dessen getContentPane() den Inhalt und steckst diesen per setContentPane() ins JApplet.


```
...
JFrame frame = new viergewinntgraphik();
this.setContentPane(frame.getContentPane());
...
```

Habe gerade Deine Code überflogen: Kann es sein, dass Du die paint() von JFrame überschreibst? Sehr schlecht. Das könnte bedeuten, dass Du es noch mal neu schreiben darfst.


----------



## flipperweid (15. Nov 2010)

Ja die habe ich überschrieben. Wollte ja das sie nach meinen Wünschen zeichnet, und dachte es wäre Klug dies also über diesem wege zu machen.
Was ist denn das Problem daran?:S
Gibt es da nicht noch eine andere Lösung?


----------



## Michael... (15. Nov 2010)

flipperweid hat gesagt.:


> Ja die habe ich überschrieben. Wollte ja das sie nach meinen Wünschen zeichnet, und dachte es wäre Klug dies also über diesem wege zu machen.
> Was ist denn das Problem daran?:S
> Gibt es da nicht noch eine andere Lösung?


Üblicherweise erbt man von JComponent oder JPanel und überschreibt deren paintComponent(Graphics g) und fügt diese Komponente dann in den JFrame oder ins JApplet ein.

Ob's in Deinem Fall Probleme macht, wird sich ja bei der Portierung ins JApplet zeigen.


----------



## L-ectron-X (15. Nov 2010)

Michael... hat gesagt.:


> Habe gerade Deine Code überflogen: Kann es sein, dass Du die paint() von JFrame überschreibst?



und



flipperweid hat gesagt.:


> Ja die habe ich überschrieben.




Wohl kaum, denn:


			
				flipperweid hat gesagt.:
			
		

> [JAVA=8]public class viergewinntgraphik extends Frame implements ActionListener {[/code]




Generell hast du dir hier eine ungünstige Position zur Erzeugung eines Applets geschaffen.
Eine Möglichkeit wäre noch, im Applet den Frame zu instanziieren und anzuzeigen. 
Das geht so lange gut, bis du anfängst mit Bildern zu arbeiten. Denn die werden im Applet und in einer Applikation jeweils unterschiedlich geladen.


----------



## flipperweid (15. Nov 2010)

Achso. Ja ich überschreibe die paint methode von "Frame" und nicht von "JFrame"..
wie instanziere ich denn den Frame inm Applet?
Kannst du das vllt. ähnlich wie Michael beispielhaft darstellen?
PS: Mit Bildern möchte ich zum Glück nicht arbeiten. Ich zeichne lediglich Kreise, Lininen und ähnliches, die wohl denke ich mal nicht zu Bilder zählen?


----------



## L-ectron-X (15. Nov 2010)

```
import java.applet.*;

public class FrameOpener extends Applet {
  public void init() {
    viergewinntgraphik.main(null);
  }
}
```


```
<applet code="FrameOpener.class" width="0" height="0">
</applet>
```
Könnte funktionieren.


----------



## Michael... (15. Nov 2010)

Sorry, bin von JFrame ausgegangen (heutzutage nutzt doch kaum noch jemand AWT Komponenten?)
Bei Frame ist das ein bisschen...
Statt getContentPane() könnte getComponent(0) funktionieren, die mit der Methode erhaltene Komponente ins Applet einbauen.

Für's nächste Projekt:
Mit folgender Vorgehensweise kann man das Programm als Applet und Frame nutzen.

```
import java.applet.Applet;
import java.awt.*;

public class FrameAppletDemo extends Applet {
	public static void main(String[] args) {
		Frame frame = new Frame();
		frame.add(new GUIPanel());
		frame.setBounds(0, 0, 100, 100);
		frame.setVisible(true);
	}
	
	public void init() {
		this.setLayout(new BorderLayout());
		this.add(new GUIPanel());
	}
}

class GUIPanel extends Panel {
	public GUIPanel() {
		this.setLayout(new BorderLayout());
		this.add(new Label("4 gewinnt"));
		this.setBackground(Color.RED);
	}
}
```


----------



## flipperweid (15. Nov 2010)

Jau werde mir eine neue vorgehensweise aneignen. bzw. habe ich teilweise schon.
Vielen vielen Dank schonmal an euch beiden.
Bin noch auf der Arbeit. Werde es aber dann Zuhause ausprobieren!


----------



## flipperweid (17. Nov 2010)

hm also:


```
public class frameopener extends Applet {

    public static void main(String[] args) {
        frameopener starter = new frameopener();
        starter.init();
    }
public void init() {
    viergewinntgraphik.main(null);
  }
```

funktioniert nicht. Habe die "Website" mittels deines HTML codes gemacht. doch dann habe ich nur weißen hintergrund und das wars..


----------



## Michael... (17. Nov 2010)

Falls der Code funktioniert, wird die Applikation nicht im Browser angezeigt, sondern neuer Frame geöffnet.

Eine static main(...) ist im Applet jetzt nicht unbedingt notwendig, habe ich in meinem Bsp. nur aufgenommen damit es als Applikation und als Applet verwendbar ist.

Relevant für ein Applet sind init(), start(), stop(), destroy() wobei die init() erst einmal ausreichen sollte.

Wenn das Programm im Browser als Applet angezeigt werden soll, musst Du - wie erwähnt - die Komponenten des Frames ins Applet einbauen. Eventuell könnte folgendes in der init() funktionieren:

```
Frame frame = new viergewinntgraphik();
this.add(frame.getComponent(0));
```


----------



## L-ectron-X (17. Nov 2010)

flipperweid hat gesagt.:


> funktioniert nicht.


Stimmt, weil ein Applet nicht die VM beenden darf. Weil im Frame das Beenden der VM per WindowEvent hinterlegt wurde, wirft das Applet in dieser Bauweise eine AccessControlException.
Um zu funktionieren, müsste das Applet signiert werden.

Wenn du aber die VM im Frame nicht durch 
	
	
	
	





```
System.exit(0)
```
 abwürgst, sondern mit einem Aufruf von 
	
	
	
	





```
dispose()
```
 beendest, wird es funktionieren, auch ohne signieren.

BTW: Die main()-Methode wird in einer von Applet abgeleiteten Klasse niemals aufgerufen, kann also weg.


----------



## flipperweid (17. Nov 2010)

okay, ich hab jetzt:

```
public class frameopener extends Applet {
public void init() {
    Frame frame = new viergewinntgraphik();
    this.add(frame.getComponent(0));
    viergewinntgraphik.main(null);
  }
}
```

funktioniert leider immer noch nicht.
wenn ich die html seite mit firefox ausführe sagt er mir das eine unsicher signierung vorliegt.. kann aber trotzdem auf "ausführen" drücken um das zu ignorieren. (das kam vorher auch schon, bei den letzten versuchen)
dann kommt aber nur wie üblich der weiße hintergrund.
habe das windowsevent rausgenommen und einen extra schließ button hinzugefügt.. (ist glaube ich unnötig..?)

hier nochmal mein komplette quellcode:


```
import java.applet.*;
import java.awt.*;
import java.awt.event.*;


public class frameopener extends Applet {
public void init() {
    Frame frame = new viergewinntgraphik();
    this.add(frame.getComponent(0));
    viergewinntgraphik.main(null);
  }
}

class viergewinntgraphik extends Frame implements ActionListener {
    public static char felder[][] = new char[6][7];
    public static int reihe;
    public static int spieler = 1;
    public static String spielername1 = "Spieler 1", spielername2 = "Spieler 2";
    static boolean win = false;
    static int unentschieden = 0;
    static int spieler1 = 0;
    static int spieler2 = 0;
    //***********************GRAFIKEN ERSTELLEN*************************************************
    static Button put1, put2, put3, put4, put5, put6, put7, nochmalbtn, schliessbtn;
    static Label spielerlbl, statistiklbl, spieler1lbl, spieler2lbl, unentschiedenlbl;
    static TextField name1lbl, name2lbl;
    public viergewinntgraphik() {
        setLayout(null);
        spielerlbl = new Label("Spieler 1, sie sind an der Reihe!");
        statistiklbl = new Label("Statistiken: ");
        spieler1lbl = new Label(spielername1 + ": " + spieler1);
        spieler2lbl = new Label(spielername2 + ": " + spieler2);
        name1lbl = new TextField("Name Spieler1");
        name2lbl = new TextField("Name Spieler2");
        unentschiedenlbl = new Label("Unentschieden: " + unentschieden);
        put1 = new Button("Put");
        put2 = new Button("Put");
        put3 = new Button("Put");
        put4 = new Button("Put");
        put5 = new Button("Put");
        put6 = new Button("Put");
        put7 = new Button("Put");

        schliessbtn = new Button("X");

        nochmalbtn = new Button("Nochmal?");
        spielerlbl.setForeground(Color.red);
        spieler1lbl.setForeground(Color.red);
        spieler2lbl.setForeground(Color.blue);
        //setze Koordinaten
        name1lbl.setBounds(350, 715, 200, 30);
        name2lbl.setBounds(350, 755, 200, 30);
        spielerlbl.setBounds(105, 725, 300, 50);
        statistiklbl.setBounds(605, 705, 200, 20);
        spieler1lbl.setBounds(605, 725, 200, 20);
        spieler2lbl.setBounds(605, 750, 200, 20);
        unentschiedenlbl.setBounds(605, 775, 200, 20);
        put1.setBounds(105, 50, 95, 40);
        put2.setBounds(205, 50, 95, 40);
        put3.setBounds(305, 50, 95, 40);
        put4.setBounds(405, 50, 95, 40);
        put5.setBounds(505, 50, 95, 40);
        put6.setBounds(605, 50, 95, 40);
        put7.setBounds(705, 50, 95, 40);
        nochmalbtn.setBounds(205, 725, 100, 50);
       schliessbtn.setBounds(850,50,30,30);
        //registriere Buttons
        add(name1lbl);
        add(name2lbl);
        add(spielerlbl);
        add(statistiklbl);
        add(spieler1lbl);
        add(spieler2lbl);
        add(unentschiedenlbl);
        add(put1);
        add(put2);
        add(put3);
        add(put4);
        add(put5);
        add(put6);
        add(put7);
        add(nochmalbtn);
        add(schliessbtn);
        put1.addActionListener(this);
        put2.addActionListener(this);
        put3.addActionListener(this);
        put4.addActionListener(this);
        put5.addActionListener(this);
        put6.addActionListener(this);
        put7.addActionListener(this);
        nochmalbtn.addActionListener(this);
        schliessbtn.addActionListener(this);
        put1.setActionCommand("eins");
        put2.setActionCommand("zwei");
        put3.setActionCommand("drei");
        put4.setActionCommand("vier");
        put5.setActionCommand("fünf");
        put6.setActionCommand("sechs");
        put7.setActionCommand("sieben");
        nochmalbtn.setActionCommand("nochmal");
        schliessbtn.setActionCommand("schließen");
        spielerlbl.setVisible(false);
        nochmalbtn.setLabel("Ok");
        buttonsschalten(0);
    }

    public void actionPerformed(ActionEvent e) { //BUTTONEVENTS******************
            if (e.getActionCommand().equals("schließen")){ //SCHLIEß EVENT:
                dispose();
            }
        if (e.getActionCommand().equals("nochmal")) {
            if (nochmalbtn.getLabel().equals("Ok")) {  //Namenseingabe

                spielername1 = name1lbl.getText();
                spielername2 = name2lbl.getText();
                spieler1lbl.setText(spielername1 + ": ");
                spieler2lbl.setText(spielername2 + ": ");
                name1lbl.setVisible(false);
                name2lbl.setVisible(false);
                spielerlbl.setVisible(true);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                buttonsschalten(1);
                nochmalbtn.setVisible(false);
                nochmalbtn.setLabel("Nochmal?");
                nochmalbtn.setBounds(450, 725, 100, 50);

            } else { //Neues Spiel wird vorbereitet
                buttonsschalten(1);
                spielerlbl.setForeground(Color.red);
                win = false;
                spieler = 1;
                //Spielfelderstellen;
                for (int i = 0; i < 6; i++) {
                    for (int j = 0; j < 7; j++) {
                        felder[i][j] = '|';
                    }
                }
                repaint(); //leeres Spielfeld neu zeichnen
                nochmalbtn.setVisible(false);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe.");

            }
        } else {
            if (e.getActionCommand().equals("eins")) {
                reihe = 1;

            }
            if (e.getActionCommand().equals("zwei")) {
                reihe = 2;

            }
            if (e.getActionCommand().equals("drei")) {
                reihe = 3;

            }
            if (e.getActionCommand().equals("vier")) {
                reihe = 4;

            }
            if (e.getActionCommand().equals("fünf")) {
                reihe = 5;

            }
            if (e.getActionCommand().equals("sechs")) {
                reihe = 6;

            }
            if (e.getActionCommand().equals("sieben")) {
                reihe = 7;

            }
            boolean besetzt = false;
            boolean gesetzt = false;
            int j = reihe - 1;
            for (int i = 5; i >= 0; i--) {
                besetzt = false;
                if (felder[i][j] == '|') { //wenn Feld Leer
                    switch (spieler) {
                        case 1:
                            felder[i][j] = 'R'; //setze R
                            System.out.println(spielername1 + ", setzt roten Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;

                            }
                            break;
                        case 2:
                            felder[i][j] = 'B'; //setze B
                            System.out.println(spielername2 + " setzt blauen Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;

                            }
                            break;
                    }//switch
                    gesetzt = true;
                } //ende if abfrage
                if (gesetzt == true) {
                    break;

                }
            } //ende for schleife

            if (besetzt == true) {
                switch (reihe) {
                    case 1:
                        put1.setEnabled(false);
                        break;
                    case 2:
                        put2.setEnabled(false);
                        break;
                    case 3:
                        put3.setEnabled(false);
                        break;
                    case 4:
                        put4.setEnabled(false);
                        break;
                    case 5:
                        put5.setEnabled(false);
                        break;
                    case 6:
                        put6.setEnabled(false);
                        break;
                    case 7:
                        put7.setEnabled(false);
                        break;
                }
            }
            ////****Abfragen nach Ergebnisende!
            if (pruefen().compareTo("voll") == 0) {
                System.out.println("Spielfeld ist voll, niemand hat gewonnen!");
                spielerlbl.setText("Ein Unentschieden!");
                win = true;
                unentschieden += 1;
            }
            if (pruefen().compareTo("spieler1") == 0) {
                System.out.println(spielername1 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername1 + " gewinnt!");
                win = true;
                spieler1 += 1;
            }
            if (pruefen().compareTo("spieler2") == 0) {
                System.out.println(spielername2 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername2 + " gewinnt!");
                win = true;
                spieler2 += 1;
            }
            if (win == true) {
                buttonsschalten(0);
                System.out.println(spielername1 + "(Rot) hat bisher " + spieler1 + " mal gewonnen");
                spieler1lbl.setText(spielername1 + ":            " + spieler1);
                System.out.println();
                System.out.println(spielername2 + "(Blau) hat bisher " + spieler2 + " mal gewonnen");
                spieler2lbl.setText(spielername2 + ":            " + spieler2);
                System.out.println();
                System.out.println("Es gab bisher " + unentschieden + " unentschieden");
                unentschiedenlbl.setText("Unentschieden: " + unentschieden);
                System.out.println();
                nochmalbtn.setVisible(true);

                repaint();

            } else { //wenn nicht zuende

                repaint();
                if (spieler == 1) {
                    spieler = 2; //spielerwechsel
                    spielerlbl.setText(spielername2 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.blue);
                } else if (spieler == 2) {
                    spieler = 1;
                    spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.red);
                }
            }
        }
    }

    public void paint(Graphics g) {
        //*************Viergewinntfeldzeichnen!***********************************
        g.setColor(Color.black);

        for (int i = 100; i <= 800; i += 100) {
            g.drawLine(i, 700, i, 100);
        }
        for (int i = 700; i >= 0; i -= 100) {
            g.drawLine(800, i, 100, i);
        }
        for (int i = 100; i < 800; i+=100) {
        g.drawArc(i, 100, 100, 10, 0, 360);
            }
        //***************Spielsteine setzen**************************************
        for (int i = 0; i < 6; i++) {
            for (int k = 0; k < 7; k++) { //geht alle Felder einmal durch!
                if (felder[i][k] == 'R') { //wenn RoterStein
                    g.setColor(Color.red);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                } //ende Rot
                else if (felder[i][k] == 'B') {//wenn BlauerStein
                    g.setColor(Color.blue);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                }//ende Blau
            }
        }
    }

    public static void buttonsschalten(int binaer) {
        switch (binaer) {
            case 0:
                put1.setEnabled(false);
                put2.setEnabled(false);
                put3.setEnabled(false);
                put4.setEnabled(false);
                put5.setEnabled(false);
                put6.setEnabled(false);
                put7.setEnabled(false);
                break;
            case 1:
                put1.setEnabled(true);
                put2.setEnabled(true);
                put3.setEnabled(true);
                put4.setEnabled(true);
                put5.setEnabled(true);
                put6.setEnabled(true);
                put7.setEnabled(true);
                break;
        }
    }

    public static void main(String[] args){
        viergewinntgraphik frm = new viergewinntgraphik();
        frm.setSize(900, 800);
        frm.setVisible(true);

        //Spielfelderstellen;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                felder[i][j] = '|';
            }
        }
        frm.setResizable(false);
    }

//**********************PRÜFEN*************************************************************
    public static String pruefen() {
        String gewinnnachricht = "weiter";
        char player = 'R';
        switch (spieler) {
            case 1:
                player = 'R';
                break;
            case 2:
                player = 'B';
                break;
        }
        int anzahl = 0;
        //*******WAAGERECHT
        //***** Spieler gewonnen 1 waagerecht? ****
        int zaehler = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != i) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;


                    }
                } else {
                    anzahl = 0;

                }
                zaehler = i;
            }
        }
        ////////////**SENKRECHT
        //***** Spieler gewonnen 1 senkrecht? ****
        anzahl = 0;
        for (int j = 0; j < 7; j++) {
            for (int i = 0; i < 6; i++) {

                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != j) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;


                    }
                } else {
                    anzahl = 0;

                }
                zaehler = j;
            }
        }
//*********************************Spiele gewonnen Diagonal************************
//Oben Links nach Unten Rechts!!
        anzahl = 0;
        int k = 0;
        for (int i = 2; i < 6; i++) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 1; i < 6; i++) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 0; i < 5; i++) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 0; i < 4; i++) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

        //Unten Links nach Oben Rechts!!!****************
        anzahl = 0;
        k = 0;
        for (int i = 3; i >= 0; i--) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 4; i >= 0; i--) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 5; i >= 1; i--) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 5; i >= 2; i--) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

//*********Feld voll?*******
        anzahl = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] != '|') { //
                    anzahl += 1; //zählt unbesetzte felder
                    if (anzahl == 42) { //wenn alle felder besetzt sind
                        return gewinnnachricht = "voll";
                    }
                } //ende if abfrage feld leer
            } //ende j for schleife
        } // ende i for schleife

        return gewinnnachricht;
    }
}
```


----------



## Michael... (17. Nov 2010)

flipperweid hat gesagt.:


> okay, ich hab jetzt:
> 
> ```
> public class frameopener extends Applet {
> ...


Wenn dann:

```
public class frameopener extends Applet {
    public void init() {
        Frame frame = new viergewinntgraphik();
        this.add(frame.getComponent(0));
    }
}
```
Funktioniert aber nicht, es wird höchstens die zuerst im Frame eingefügte Komponente angezeigt. Dachte Frame hätte auch sowas wie eine ContentPane.

Lass doch mal Deine viergewinntgraphik von Panel erben (Convention für Klassennamen: VierGewinntGraphik)

```
class viergewinntgraphik extends Panel
```
Und füge es wie folgt ins Applet ein

```
public class frameopener extends Applet {
    public void init() {
        this.setLayout(new BorderLayout());
        this.add(new viergewinntgraphik());
    }
}
```
Der Code der Dir dann in der Viergewinnt Klasse als falsch angezeigt wird kann vermutlich grösstenteils geloscht werden.


----------



## flipperweid (17. Nov 2010)

code zeile 347 (frm.setResizable(false)
und code zeile 115 (dispose()) habe ich einfach rausgenommen.
war ja nicht wirklich wichtig..

funktioniert aber leider immer noch nicht
habs alles so gemacht wie du sagtest..


```
import java.applet.*;
import java.awt.*;
import java.awt.event.*;


public class frameopener extends Applet {
public void init() {
   /* Frame frame = new viergewinntgraphik();
    this.add(frame.getComponent(0));
    viergewinntgraphik.main(null);*/

            this.setLayout(new BorderLayout());
        this.add(new viergewinntgraphik());
  }
}


//class viergewinntgraphik extends Frame implements ActionListener {
class viergewinntgraphik extends Panel implements ActionListener {

    public static char felder[][] = new char[6][7];
    public static int reihe;
    public static int spieler = 1;
    public static String spielername1 = "Spieler 1", spielername2 = "Spieler 2";
    static boolean win = false;
    static int unentschieden = 0;
    static int spieler1 = 0;
    static int spieler2 = 0;
    //***********************GRAFIKEN ERSTELLEN*************************************************
    static Button put1, put2, put3, put4, put5, put6, put7, nochmalbtn, schliessbtn;
    static Label spielerlbl, statistiklbl, spieler1lbl, spieler2lbl, unentschiedenlbl;
    static TextField name1lbl, name2lbl;
    public viergewinntgraphik() {
        setLayout(null);
        spielerlbl = new Label("Spieler 1, sie sind an der Reihe!");
        statistiklbl = new Label("Statistiken: ");
        spieler1lbl = new Label(spielername1 + ": " + spieler1);
        spieler2lbl = new Label(spielername2 + ": " + spieler2);
        name1lbl = new TextField("Name Spieler1");
        name2lbl = new TextField("Name Spieler2");
        unentschiedenlbl = new Label("Unentschieden: " + unentschieden);
        put1 = new Button("Put");
        put2 = new Button("Put");
        put3 = new Button("Put");
        put4 = new Button("Put");
        put5 = new Button("Put");
        put6 = new Button("Put");
        put7 = new Button("Put");

        schliessbtn = new Button("X");

        nochmalbtn = new Button("Nochmal?");
        spielerlbl.setForeground(Color.red);
        spieler1lbl.setForeground(Color.red);
        spieler2lbl.setForeground(Color.blue);
        //setze Koordinaten
        name1lbl.setBounds(350, 715, 200, 30);
        name2lbl.setBounds(350, 755, 200, 30);
        spielerlbl.setBounds(105, 725, 300, 50);
        statistiklbl.setBounds(605, 705, 200, 20);
        spieler1lbl.setBounds(605, 725, 200, 20);
        spieler2lbl.setBounds(605, 750, 200, 20);
        unentschiedenlbl.setBounds(605, 775, 200, 20);
        put1.setBounds(105, 50, 95, 40);
        put2.setBounds(205, 50, 95, 40);
        put3.setBounds(305, 50, 95, 40);
        put4.setBounds(405, 50, 95, 40);
        put5.setBounds(505, 50, 95, 40);
        put6.setBounds(605, 50, 95, 40);
        put7.setBounds(705, 50, 95, 40);
        nochmalbtn.setBounds(205, 725, 100, 50);
       schliessbtn.setBounds(850,50,30,30);
        //registriere Buttons
        add(name1lbl);
        add(name2lbl);
        add(spielerlbl);
        add(statistiklbl);
        add(spieler1lbl);
        add(spieler2lbl);
        add(unentschiedenlbl);
        add(put1);
        add(put2);
        add(put3);
        add(put4);
        add(put5);
        add(put6);
        add(put7);
        add(nochmalbtn);
        add(schliessbtn);
        put1.addActionListener(this);
        put2.addActionListener(this);
        put3.addActionListener(this);
        put4.addActionListener(this);
        put5.addActionListener(this);
        put6.addActionListener(this);
        put7.addActionListener(this);
        nochmalbtn.addActionListener(this);
        schliessbtn.addActionListener(this);
        put1.setActionCommand("eins");
        put2.setActionCommand("zwei");
        put3.setActionCommand("drei");
        put4.setActionCommand("vier");
        put5.setActionCommand("fünf");
        put6.setActionCommand("sechs");
        put7.setActionCommand("sieben");
        nochmalbtn.setActionCommand("nochmal");
        schliessbtn.setActionCommand("schließen");
        spielerlbl.setVisible(false);
        nochmalbtn.setLabel("Ok");
        buttonsschalten(0);
    }

    public void actionPerformed(ActionEvent e) { //BUTTONEVENTS******************
            if (e.getActionCommand().equals("schließen")){ //SCHLIEß EVENT:
             //   dispose();
            }
        if (e.getActionCommand().equals("nochmal")) {
            if (nochmalbtn.getLabel().equals("Ok")) {  //Namenseingabe

                spielername1 = name1lbl.getText();
                spielername2 = name2lbl.getText();
                spieler1lbl.setText(spielername1 + ": ");
                spieler2lbl.setText(spielername2 + ": ");
                name1lbl.setVisible(false);
                name2lbl.setVisible(false);
                spielerlbl.setVisible(true);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                buttonsschalten(1);
                nochmalbtn.setVisible(false);
                nochmalbtn.setLabel("Nochmal?");
                nochmalbtn.setBounds(450, 725, 100, 50);

            } else { //Neues Spiel wird vorbereitet
                buttonsschalten(1);
                spielerlbl.setForeground(Color.red);
                win = false;
                spieler = 1;
                //Spielfelderstellen;
                for (int i = 0; i < 6; i++) {
                    for (int j = 0; j < 7; j++) {
                        felder[i][j] = '|';
                    }
                }
                repaint(); //leeres Spielfeld neu zeichnen
                nochmalbtn.setVisible(false);
                spielerlbl.setText(spielername1 + ", Sie sind an der Reihe.");

            }
        } else {
            if (e.getActionCommand().equals("eins")) {
                reihe = 1;

            }
            if (e.getActionCommand().equals("zwei")) {
                reihe = 2;

            }
            if (e.getActionCommand().equals("drei")) {
                reihe = 3;

            }
            if (e.getActionCommand().equals("vier")) {
                reihe = 4;

            }
            if (e.getActionCommand().equals("fünf")) {
                reihe = 5;

            }
            if (e.getActionCommand().equals("sechs")) {
                reihe = 6;

            }
            if (e.getActionCommand().equals("sieben")) {
                reihe = 7;

            }
            boolean besetzt = false;
            boolean gesetzt = false;
            int j = reihe - 1;
            for (int i = 5; i >= 0; i--) {
                besetzt = false;
                if (felder[i][j] == '|') { //wenn Feld Leer
                    switch (spieler) {
                        case 1:
                            felder[i][j] = 'R'; //setze R
                            System.out.println(spielername1 + ", setzt roten Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;

                            }
                            break;
                        case 2:
                            felder[i][j] = 'B'; //setze B
                            System.out.println(spielername2 + " setzt blauen Spielstein in Reihe " + (j + 1));
                            if (i == 0) {
                                besetzt = true;

                            }
                            break;
                    }//switch
                    gesetzt = true;
                } //ende if abfrage
                if (gesetzt == true) {
                    break;

                }
            } //ende for schleife

            if (besetzt == true) {
                switch (reihe) {
                    case 1:
                        put1.setEnabled(false);
                        break;
                    case 2:
                        put2.setEnabled(false);
                        break;
                    case 3:
                        put3.setEnabled(false);
                        break;
                    case 4:
                        put4.setEnabled(false);
                        break;
                    case 5:
                        put5.setEnabled(false);
                        break;
                    case 6:
                        put6.setEnabled(false);
                        break;
                    case 7:
                        put7.setEnabled(false);
                        break;
                }
            }
            ////****Abfragen nach Ergebnisende!
            if (pruefen().compareTo("voll") == 0) {
                System.out.println("Spielfeld ist voll, niemand hat gewonnen!");
                spielerlbl.setText("Ein Unentschieden!");
                win = true;
                unentschieden += 1;
            }
            if (pruefen().compareTo("spieler1") == 0) {
                System.out.println(spielername1 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername1 + " gewinnt!");
                win = true;
                spieler1 += 1;
            }
            if (pruefen().compareTo("spieler2") == 0) {
                System.out.println(spielername2 + " hat das Spiel gewonnen");
                spielerlbl.setText(spielername2 + " gewinnt!");
                win = true;
                spieler2 += 1;
            }
            if (win == true) {
                buttonsschalten(0);
                System.out.println(spielername1 + "(Rot) hat bisher " + spieler1 + " mal gewonnen");
                spieler1lbl.setText(spielername1 + ":            " + spieler1);
                System.out.println();
                System.out.println(spielername2 + "(Blau) hat bisher " + spieler2 + " mal gewonnen");
                spieler2lbl.setText(spielername2 + ":            " + spieler2);
                System.out.println();
                System.out.println("Es gab bisher " + unentschieden + " unentschieden");
                unentschiedenlbl.setText("Unentschieden: " + unentschieden);
                System.out.println();
                nochmalbtn.setVisible(true);

                repaint();

            } else { //wenn nicht zuende

                repaint();
                if (spieler == 1) {
                    spieler = 2; //spielerwechsel
                    spielerlbl.setText(spielername2 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.blue);
                } else if (spieler == 2) {
                    spieler = 1;
                    spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
                    spielerlbl.setForeground(Color.red);
                }
            }
        }
    }

    public void paint(Graphics g) {
        //*************Viergewinntfeldzeichnen!***********************************
        g.setColor(Color.black);

        for (int i = 100; i <= 800; i += 100) {
            g.drawLine(i, 700, i, 100);
        }
        for (int i = 700; i >= 0; i -= 100) {
            g.drawLine(800, i, 100, i);
        }
        for (int i = 100; i < 800; i+=100) {
        g.drawArc(i, 100, 100, 10, 0, 360);
            }
        //***************Spielsteine setzen**************************************
        for (int i = 0; i < 6; i++) {
            for (int k = 0; k < 7; k++) { //geht alle Felder einmal durch!
                if (felder[i][k] == 'R') { //wenn RoterStein
                    g.setColor(Color.red);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                } //ende Rot
                else if (felder[i][k] == 'B') {//wenn BlauerStein
                    g.setColor(Color.blue);
                    g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
                }//ende Blau
            }
        }
    }

    public static void buttonsschalten(int binaer) {
        switch (binaer) {
            case 0:
                put1.setEnabled(false);
                put2.setEnabled(false);
                put3.setEnabled(false);
                put4.setEnabled(false);
                put5.setEnabled(false);
                put6.setEnabled(false);
                put7.setEnabled(false);
                break;
            case 1:
                put1.setEnabled(true);
                put2.setEnabled(true);
                put3.setEnabled(true);
                put4.setEnabled(true);
                put5.setEnabled(true);
                put6.setEnabled(true);
                put7.setEnabled(true);
                break;
        }
    }

    public static void main(String[] args){
        viergewinntgraphik frm = new viergewinntgraphik();
        frm.setSize(900, 800);
        frm.setVisible(true);

        //Spielfelderstellen;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                felder[i][j] = '|';
            }
        }
     //   frm.setResizable(false);
    }

//**********************PRÜFEN*************************************************************
    public static String pruefen() {
        String gewinnnachricht = "weiter";
        char player = 'R';
        switch (spieler) {
            case 1:
                player = 'R';
                break;
            case 2:
                player = 'B';
                break;
        }
        int anzahl = 0;
        //*******WAAGERECHT
        //***** Spieler gewonnen 1 waagerecht? ****
        int zaehler = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != i) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;


                    }
                } else {
                    anzahl = 0;

                }
                zaehler = i;
            }
        }
        ////////////**SENKRECHT
        //***** Spieler gewonnen 1 senkrecht? ****
        anzahl = 0;
        for (int j = 0; j < 7; j++) {
            for (int i = 0; i < 6; i++) {

                if (felder[i][j] == player) { //wenn feld gleich R
                    if (zaehler != j) {
                        anzahl = 0;

                    }
                    anzahl += 1;

                    if (anzahl == 4) {
                        return gewinnnachricht = "spieler" + spieler;


                    }
                } else {
                    anzahl = 0;

                }
                zaehler = j;
            }
        }
//*********************************Spiele gewonnen Diagonal************************
//Oben Links nach Unten Rechts!!
        anzahl = 0;
        int k = 0;
        for (int i = 2; i < 6; i++) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 1; i < 6; i++) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 0; i < 6; i++) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 0; i < 5; i++) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 0; i < 4; i++) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

        //Unten Links nach Oben Rechts!!!****************
        anzahl = 0;
        k = 0;
        for (int i = 3; i >= 0; i--) {  //REIHE 1
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 4; i >= 0; i--) {  //REIHE 2
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 0;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 3
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 1;
        anzahl = 0;
        for (int i = 5; i >= 0; i--) {  //REIHE 4
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 2;
        anzahl = 0;
        for (int i = 5; i >= 1; i--) {  //REIHE 5
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }
        k = 3;
        anzahl = 0;
        for (int i = 5; i >= 2; i--) {  //REIHE 6
            if (felder[i][k] == player) {
                anzahl += 1;
                if (anzahl == 4) {
                    return gewinnnachricht = "spieler" + spieler;

                }
            } else {
                anzahl = 0;

            }
            k++;
        }

//*********Feld voll?*******
        anzahl = 0;
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                if (felder[i][j] != '|') { //
                    anzahl += 1; //zählt unbesetzte felder
                    if (anzahl == 42) { //wenn alle felder besetzt sind
                        return gewinnnachricht = "voll";
                    }
                } //ende if abfrage feld leer
            } //ende j for schleife
        } // ende i for schleife

        return gewinnnachricht;
    }
}
```


----------



## Michael... (17. Nov 2010)

Kannst Du das Applet in Deiner Entwicklungsumgebung starten?
Werden irgendwelche Fehler ausgegeben. Wird im Browser an der Stelle des Applets ein X angezeigt?


----------



## flipperweid (17. Nov 2010)

Ich arbeite mit der Entwicklungsebene Netbeans 6.9.
Der Code lässt sich nicht mehr ausführen, da der Compiler:


> java.lang.NoSuchMethodError: main
> Exception in thread "main" Java Result: 1


 sagt.
Kein wunder, habe die main-methode ja rausgenommen.

und im Browser ist kein X zu sehen.. nur weißer hintergrund.
und vorher kommt eine fehlermeldung (siehe anhang)..

hier auch mal mein html text:


```
<html>
<head>
<title>4 Gewinnt</title>
</head>
<body>
<applet code="FrameOpener.class" width="0" height="0">
</applet>
</body>
</html>
```


----------



## Michael... (17. Nov 2010)

flipperweid hat gesagt.:


> Ich arbeite mit der Entwicklungsebene Netbeans 6.9.
> Der Code lässt sich nicht mehr ausführen, da der Compiler:
> sagt.
> Kein wunder, habe die main-methode ja rausgenommen.


Du musst das Programm als Applet und nicht als Applikation starten. Keine Ahnung wie das in NetBeans ist - Eclipse bietet alle Möglichkeiten automatisch an.


----------



## flipperweid (17. Nov 2010)

ich glaube ich habs versucht als applet auszuführen.
klappt nicht, compiler sagt:


> init:
> Deleting: C:\Projects\_Ausbildung\Java\FrameOpener\build\built-jar.properties
> deps-jar:
> Updating property file: C:\Projects\_Ausbildung\Java\FrameOpener\build\built-jar.properties
> ...


----------



## L-ectron-X (17. Nov 2010)

So, guck mal. War gar nicht so schwer, wenn man weiß, was zu tun ist...
Im Anhang findest du *deine* fertig kompilierte und verpackte Jar-Datei.
Ein Doppelklick auf diese wird deine Applikation starten, und wenn du sie in eine HTML-Datei einbettest, wird dein Frame vom Applet gestartet.

Der Quellcode ist im Jar-File, welches du mit einem Packprogramm ansehen/entpacken kannst.

Folgende HTML-Datei wird das Applet starten:

```
<html>
<head>
<title>4 Gewinnt - Applet</title>
</head>
<body>
<applet archive="viergewinntgraphik.jar" code="FrameOpener.class" width="0" height="0"> 
</applet>
</body>
</html>
```

Beide Dateien legst du ins gleiche Verzeichnis.


----------



## flipperweid (17. Nov 2010)

cool das klappt! wusste nicht das ich das mit der jar datei machen kann..
ist das gängig?
vielen dank an euch beide! habt mir sehr geholfen.
finde das Forum gut und denke ich werde öfter hier sein


----------



## L-ectron-X (17. Nov 2010)

Es ist üblich, Java-Programme oder Java-Bibliotheken in Jar-Dateien auszuliefern.
NetBeans erzeugt Jar-Dateien mit Klick auf das 
	

	
	
		
		

		
			





-Symbol. Die fertigen Jar-Dateien sind dann in deinem Projektverzeichnis im Unterverzeichnis _dist_ zu finden.


----------



## flipperweid (18. Nov 2010)

okay in ordnung.
dankö nochmal


----------

