# Buttons in Class



## trace (14. Aug 2011)

Ich programmiere Spiele zuhause,und versuche ,Buttons eizufügen.Ich habe jedoch nur normale Klassen erstellt,und keine Applets,und in einem Tutorial,das ich habe,ist nur das Einfügen von Buttons in Applets beschrieben.Gibt es aber dennoch eine Möglichkeit,Buttons in eine Class einzufügen oder die Class zu einem Applet umzuwandeln?


----------



## Marcinek (14. Aug 2011)

Hallo,

ein Applet ist nur eine Klasse, wie jede andere auch. Du kannst Buttons zu jedem GUIContainer hinzufügen, den du möchtest 

Wie du das speziell bei dir machen kannst, müsstest du schon mehr code posten.

Ansonsten googeln. Jedes Programm der Welt hat min ein Button. Daher denke, dass man da mehr Tuts findet.

Gruß,

Martin


----------



## trace (15. Aug 2011)

Ich programmiere Tic Tac Toe,Schiffeversenken und Schach in zweidimensionalen Feldern.Die Grundlage ist Kreis.Dreieck und Viereck + Zeichenfläche.Soll ich dann einfach mal den Konstruktor vom Tic Tac Toe reinstellen?


----------



## SlaterB (15. Aug 2011)

richtig, Code posten wie gesagt,

wobei strenggenommen vielleicht ein Hinweis auf 'Java lernen' schon angebracht wäre,
allein die richtige Benennung der Dinge wie Swing-GUI?

How to Use Buttons, Check Boxes, and Radio Buttons (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
+ natürlich vorher Grundlagen


----------



## trace (15. Aug 2011)

Ich bin erst Schüler,habe gerade die 10.Klasse Gymnasium abgeschlossen,komme also nun in die 11.Und wir haben in Informatik nur einen Teil des (sehr dürftig erklärendem) Buches durchgenommen,also sind meine Java- und BlueJ-Kenntnise dementsprechend.

Hier also nun der Konstruktor meines Tic Tac Toe(es baut auch noch auf der Klasse Feld auf,die ist aber nur ein Viereck,auf das die Dreiecke/Kreise gesetzt werden):


```
public class Tic_Tac_Toe{

public Square Untergrund;
public Feld [][] Spielfeld;
public int xPos,yPos;


public Tic_Tac_Toe(){

 Untergrund = new Square(145,15,15,"red");
 Untergrund.makeVisible();
 Spielfeld = new Feld [3][3];
            for (int i = 0; i<3;i++){
                 for (int j=0;j<3;j++){
                    Spielfeld[i][j] = new Feld(i,j);
                    Spielfeld[i][j].sichtbarMachen();}}      
}
```


----------



## SlaterB (15. Aug 2011)

dieser Code ist ein Anfang, aber wie sich nun zeigt, nicht genug,
es ist auf keine Weise erkennbar, inwiefern GUI-Komponenten wie Frame, Panel, Button, paint-Methode, Graphics-Objekt oder irgendwas interessantes betroffen ist,
mag ja sein dass du bisher irgendwas von Java verwendest was damit nix zu tun hast, aber wenn du dir meinen Link oder irgendein Beispiel-Applet anschaust, dann kommen solche Dinge eben zum Tragen,

ich hoffe mal du hast davon schon einiges, also mehr Code posten,
ansonsten wirds ganz schwer, aber Code wäre dennoch interessant 

noch ein Link:
Galileo Computing :: Java ist auch eine Insel – 19 Grafische Oberflächen mit Swing


----------



## Fu3L (15. Aug 2011)

Und sowas:


```
Spielfeld[i][j].sichtbarMachen();}}      
}
```

Wird dir irgendwann große Kopfschmerzen beim Lesen des Codes einbringen, wenns mal größer wird 

BEsser:

```
Spielfeld[i][j].sichtbarMachen();
        }
    }      
}
```


----------



## eRaaaa (15. Aug 2011)

noch besser: 
	
	
	
	





```
[B]s[/B]pielfeld[i][j]
```


----------



## trace (15. Aug 2011)

Dann ist hier nun mein komplettes Tic Tac Toe und die Klasse Feld.Die Klassen Canvas(Zeichenfeld), Triangel(Dreieck),Square(Rechteck) und Circle(Kreis) habe ich weggelassen,da diese bei mir von Anfang an als Startklasse gegeben waren.


```
public class Tic_Tac_Toe{

public Square Untergrund;
public Feld [][] Spielfeld;
public int xPos,yPos;


public Tic_Tac_Toe(){

 Untergrund = new Square(145,15,15,"red");
 Untergrund.makeVisible();
 Spielfeld = new Feld [3][3];
            for (int i = 0; i<3;i++){
                 for (int j=0;j<3;j++){
                    Spielfeld[i][j] = new Feld(i,j);
                    Spielfeld[i][j].sichtbarMachen();}}      
}

 public void setzeDreieck(int X,int Y){
     if(Spielfeld[X][Y].zeichenart == "nichts")
       {Spielfeld[X][Y].dreieckSichtbarMachen();
        Spielfeld[X][Y].zeichenart = "dreieck";
        siegkontrolle();}
     else System.out.println("Hier sitzt schon ein Zeichen!");
    }
    
 public void setzeKreis(int X,int Y){
     if(Spielfeld[X][Y].zeichenart == "nichts")
       {Spielfeld[X][Y].kreisSichtbarMachen();
        Spielfeld[X][Y].zeichenart = "kreis";
        siegkontrolle();}
     else System.out.println("Hier sitzt schon ein Zeichen!");
    }
    
 public void siegkontrolle(){
    if(Spielfeld[0][0].zeichenart == "kreis")
       {if(Spielfeld[0][1].zeichenart == "kreis")
          {if(Spielfeld[0][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}
        if(Spielfeld[1][0].zeichenart == "kreis")
          {if(Spielfeld[2][0].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}
        if(Spielfeld[1][1].zeichenart == "kreis")
          {if(Spielfeld[2][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[0][1].zeichenart == "kreis")
       {if(Spielfeld[1][1].zeichenart == "kreis")
          {if(Spielfeld[2][1].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[0][2].zeichenart == "kreis")
       {if(Spielfeld[1][2].zeichenart == "kreis")
          {if(Spielfeld[2][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[1][0].zeichenart == "kreis")
       {if(Spielfeld[1][1].zeichenart == "kreis")
          {if(Spielfeld[1][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[2][0].zeichenart == "kreis")
       {if(Spielfeld[2][1].zeichenart == "kreis")
          {if(Spielfeld[2][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[2][0].zeichenart == "kreis")
       {if(Spielfeld[1][1].zeichenart == "kreis")
          {if(Spielfeld[0][2].zeichenart == "kreis")
              {System.out.println("Kreis hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[0][0].zeichenart == "dreieck")
       {if(Spielfeld[0][1].zeichenart == "dreieck")
          {if(Spielfeld[0][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}
        if(Spielfeld[1][0].zeichenart == "dreieck")
          {if(Spielfeld[2][0].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}
        if(Spielfeld[1][1].zeichenart == "dreieck")
          {if(Spielfeld[2][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[0][1].zeichenart == "dreieck")
       {if(Spielfeld[1][1].zeichenart == "dreieck")
          {if(Spielfeld[2][1].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[0][2].zeichenart == "dreieck")
       {if(Spielfeld[1][2].zeichenart == "dreieck")
          {if(Spielfeld[2][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[1][0].zeichenart == "dreieck")
       {if(Spielfeld[1][1].zeichenart == "dreieck")
          {if(Spielfeld[1][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[2][0].zeichenart == "dreieck")
       {if(Spielfeld[2][1].zeichenart == "dreieck")
          {if(Spielfeld[2][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}
    if(Spielfeld[2][0].zeichenart == "dreieck")
       {if(Spielfeld[1][1].zeichenart == "dreieck")
          {if(Spielfeld[0][2].zeichenart == "dreieck")
              {System.out.println("Dreieck hat gewonnen.");
               alleZeichenLöschen();}}}}
             
 public void alleZeichenLöschen(){
       for (int i = 0; i<3;i++)
            {for (int j=0;j<3;j++)
                  {if(Spielfeld[i][j].zeichenart == "kreis")
                      {Spielfeld[i][j].kreisUnsichtbarMachen();
                       Spielfeld[i][j].zeichenart = "nichts";}
                    if(Spielfeld[i][j].zeichenart == "dreieck")
                       {Spielfeld[i][j].dreieckUnsichtbarMachen();
                        Spielfeld[i][j].zeichenart = "nichts";}}}}
     
 
 
}
```


```
public class Feld{

public Square f;
public Dreieck d;
public Kreis k;
public int xPos,yPos;
public String zeichenart;

public Feld(int x,int y){

 f = new Square(45,15 + x * 50,15 + y * 50,"white");
 f.makeVisible();
 xPos = x;
 yPos = y;
 zeichenart = "nichts";
}
 
 public void sichtbarMachen(){
     f.makeVisible();
    }
    
 public void unsichtbarMachen(){
     f.makeInvisible();
    }

 public void kreisSichtbarMachen(){
     k = new Kreis(xPos,yPos);
    }
    
  public void kreisUnsichtbarMachen(){
      k.unsichtbarMachen();
    }
  
  public void dreieckSichtbarMachen(){
      d = new Dreieck(xPos,yPos);
    }
  public void dreieckUnsichtbarMachen(){
      d.dreieckUnsichtbarMachen();
    }

}
```


----------



## tuttle64 (15. Aug 2011)

trace hat gesagt.:


> Ich programmiere Tic Tac Toe,Schiffeversenken und Schach in zweidimensionalen Feldern.Die Grundlage ist Kreis.Dreieck und Viereck + Zeichenfläche.Soll ich dann einfach mal den Konstruktor vom Tic Tac Toe reinstellen?



Packe doch alle Java-Files in ein Zip und hänge das Zip-File als Anhang an. Im obigen Code ist ja praktisch nichts von AWT oder Swing zu erkennen.


----------



## trace (16. Aug 2011)

Hier ist nun mein gesamtes Tic Tac Toe.


----------



## SlaterB (16. Aug 2011)

und wie lautet nun dein Ziel? möchtest du ein Applet oder weiter ein normales Programm?
nur Buttons ja oder nein kann doch kaum darüber entscheiden,

in Canvas hast du 
> frame.setContentPane(canvas);
dieses canvas-Objekt könntest du mehr oder weniger auch in ein Applet einfügen, das ist die Übergangstelle zwischen deinem Programm und Umgebung,
natürlich sollte man grundsätzlich irgendwas zu Applets wissen, wochenlang Tutorials und Beispiele programmieren,
nur hier fragen löst leider das Problem kaum

generell ist es noch als ungünstig zu bezeichnen, in einem eigenen Zeichenbereich Standard-GUI-Komponenten wie Buttons einzufügen,
dann doch lieber selber Vierecke malen und über MouseListener den Klick in dem Bereich passend interpretieren == wie Button, nur nicht ganz so schick

falls du trennen kannst dann wäre die oben genannte Stelle wieder interessant,
statt einfach nur da Canvas-Objekt einzufügen könntes du mit Layout den Platz etwas auftrennen, an eine Seite ein Panel, ein Rechteck/ einen Streifen für Buttons reservieren, den großen Rest der Oberfläche mit dem Canvas selber bemalen,
auch das kann man mit Grundkenntnissen zu GUI erreichen, ohne Kenntnisse danach zu fragen ist bisschen ziellos

leider wenig konkrete Antworten, zumindest von meiner Seite, bisschen schade nachdem du schon über Tage mehrfach geantwortet hast,
aber letztlich bisher ja auch nicht mehr als die ursprüngliche Frage und (nach Aufforderung) deinen Code dazu

ohne so grundlegende Dinge wie das Anlegen eines Applets/ JFrames mit einem Panel + Button drin kann man eigentlich gar nix schaffen dazu,
aber das lernt man eigentlich ganz gut wenn man sich entsprechende Bücher/ Tutorials anschaut, 
siehe Link in meinem Posting Gestern, 17:11


----------



## trace (16. Aug 2011)

Eigendlich hätte ich ganz gern hier in der Klasse "nur" einen Button,und ich werde dannach Applets lernen,hab ja ein Tutorial aufm PC.Aber ich wolte halt wissen,ob und wie man Buttons ungefähr in eine Klasse einbaut,da dieses Thema bei meinem Tutorial nicht behandelt wird(nur in Applets).


----------

