# eventlistener auf button-array



## Mathes (31. Mrz 2005)

Hallo zusammen
ich wollte ein schiffeversenken spiel programmieren. für die spielfelder habe ich button-arrays eingefügt.
ich füge mal den quellcode ein, ich komme nur leider nicht weiter, ich wollte es jetzt so machen, dass bei tastendruck auf z.b. taste 50 dieses array den wert 4 annimmt, nur irgendwie funktioniert dies nicht wie es soll
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class test extends Applet implements ActionListener
{
  int verteilen =1,vierer =1,dreier=1,zweier=1;



   int btnAnzahl = 100;     
   String [] btnLabels = { "", "", "", "",
                           "", "", "", "",
                           "", "","", "", "", "",
                           "", "", "", "",
                           "", "", "", "", "", "",
                           "", "", "", "",
                           "", "","", "", "", "",
                           "", "", "", "",
                           "", "", "", "", "", "",
                           "", "", "", "",
                           "", "","", "", "", "",
                           "", "", "", "",
                           "", "", "", "", "", "",
                           "", "", "", "",
                           "", "","", "", "", "",
                           "", "", "", "",
                           "", "", "", "", "", "",
                           "", "", "", "",
                           "", "","", "", "", "",
                           "", "", "", "",
                           "", ""        };




  public void init()
  {




    Panel Panelfeld1 = new Panel();      
    Panel Panelfeld2= new Panel();


    Panelfeld1.setLayout( new GridLayout(10,10)); 
    Panelfeld2.setLayout( new GridLayout(10,10) ); 

    Button [] Buttonfeld1 = new Button[btnAnzahl];   
	Button [] Buttonfeld2 = new Button[btnAnzahl];

    for (int i = 0; i < btnAnzahl; i++ )       
    {
     Buttonfeld1_ = new Button(btnLabels);    
      Panelfeld1.add( Buttonfeld1 );                 		  

      Buttonfeld1.addActionListener(this);        
     Buttonfeld1.setActionCommand(btnLabels);

   }

    for (int i = 0; i < btnAnzahl; i++)
    {
    	Buttonfeld2 = new Button(btnLabels);
    	Panelfeld2.add( Buttonfeld2 );

    }
    add(Panelfeld1); 
    add(Panelfeld2);
  }







			public void actionPerformed(ActionEvent e)
			{



                            int  koordinate=  //der aktuelle button sprich zahl i, button 50 zb




   public void (int koordinate)
   {
   	System.out.println(koordinate);    // Nur zum testen
   }
}

wäre super, wenn da jemand helfen könnte_


----------



## Wildcard (31. Mrz 2005)

Wo soll ich anfangen?
1. Code-Tags benutzen!!!
2. Klassen werden groß geschrieben!
3. Variablen werden klein geschrieben!
4. Warum machst du dieses unnötige btnLabels???



```
public class Test extends Applet
{ 
    int verteilen =1,vierer =1,dreier=1,zweier=1; 



    int btnAnzahl = 100;

    public void init() 
    { 

        Panel panelfeld1 = new Panel(); 
        Panel panelfeld2= new Panel(); 

        panelfeld1.setLayout( new GridLayout(10,10)); 
        panelfeld2.setLayout( new GridLayout(10,10) ); 

        Button [] buttonfeld1 = new Button[btnAnzahl]; 
        Button [] buttonfeld2 = new Button[btnAnzahl]; 

        for (int i = 0; i < btnAnzahl; i++ ) 
        { 
            buttonfeld1[i] = new Button(); 
            panelfeld1.add( buttonfeld1[i]); 

            buttonfeld1[i].addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    ((Button)e.getSource()).setLabel("x");
                }
            }); 
        }


        for (int i = 0; i < btnAnzahl; i++) 
        { 
            buttonfeld2[i] = new Button(); 
            panelfeld2.add( buttonfeld2[i] ); 

        } 
        add(panelfeld1); 
        add(panelfeld2); 
    } 
}
```


----------



## Mathes (31. Mrz 2005)

danke für deine schnelle antwort.
deine version geht bei mir leider nicht.
ich wollte auch nicht das label ändern, das ist kein thema.
was ich gerne haben wollte ist, beim mausklick soll der inhalt des angeklicktes button-arrays geändert werden, damit ich dort die posiotion der treffer / schiffe / wasser merken kann.


----------



## Wildcard (31. Mrz 2005)

Mathes hat gesagt.:
			
		

> deine version geht bei mir leider nicht.


Dann hast du die imports vergessen...



			
				Mathes hat gesagt.:
			
		

> ich wollte auch nicht das label ändern, das ist kein thema.
> was ich gerne haben wollte ist, beim mausklick soll der inhalt des angeklicktes button-arrays geändert werden, damit ich dort die posiotion der treffer / schiffe / wasser merken kann.




```
class Test extends Applet 
{ 
    int verteilen =1,vierer =1,dreier=1,zweier=1; 



    int btnAnzahl = 100; 
    String [] btnLabels = new String[btnAnzahl];

    public void init() 
    { 

        Panel panelfeld1 = new Panel(); 
        Panel panelfeld2= new Panel(); 


        panelfeld1.setLayout( new GridLayout(10,10)); 
        panelfeld2.setLayout( new GridLayout(10,10) ); 

        Button [] buttonfeld1 = new Button[btnAnzahl]; 
        Button [] buttonfeld2 = new Button[btnAnzahl]; 

        for (int i = 0; i < btnAnzahl; i++ ) 
        { 
            buttonfeld1[i] = new Button(); 
            buttonfeld1[i].setActionCommand(String.valueOf(i));
            panelfeld1.add( buttonfeld1[i]); 

            buttonfeld1[i].addActionListener(new ActionListener() 
            { 
                public void actionPerformed(ActionEvent e) 
                { 
                    ((Button)e.getSource()).setLabel("x"); 
                    int j = Integer.parseInt(((Button)e.getSource()).getActionCommand());
                    btnLabels[j]="whatever you want";
                } 
            }); 
        } 


        for (int i = 0; i < btnAnzahl; i++) 
        { 
            buttonfeld2[i] = new Button(); 
            panelfeld2.add( buttonfeld2[i] ); 

        } 
        add(panelfeld1); 
        add(panelfeld2); 
    } 
} 


        for (int i = 0; i < btnAnzahl; i++) 
        { 
            buttonfeld2[i] = new Button(); 
            panelfeld2.add( buttonfeld2[i] ); 

        } 
        add(panelfeld1); 
        add(panelfeld2); 
    } 
}
```


----------



## Mathes (31. Mrz 2005)

aha, danke, das sieht schon sehr schön aus
ja, hatte im eifer des gefechtes nicht gesehen, dass du die imports nicht hinzugefügt hattest, sry
dann ging die erste version von dir,
die zweite mag noch nicht so ganz
habe java.awt.*;
java.applet.*;
java.awt.event.*;
aber kommen fehlermeldungen,
class or interface expected
sry, aber schonmal danke für die mühe soweit


----------



## Wildcard (31. Mrz 2005)

Also hier die ganze Version  :roll: 

```
import java.applet.Applet;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


/**
 * TODO short description for Test.
 * 


 * Long description for Test.
 * 
 * @author Wildcard
 * @version $Revision: $
 */
public class Test extends Applet 
{ 
  int verteilen =1,vierer =1,dreier=1,zweier=1; 



  int btnAnzahl = 100; 
  String [] btnLabels = new String[btnAnzahl];

  public void init() 
  { 

      Panel panelfeld1 = new Panel(); 
      Panel panelfeld2= new Panel(); 


      panelfeld1.setLayout( new GridLayout(10,10)); 
      panelfeld2.setLayout( new GridLayout(10,10) ); 

      Button [] buttonfeld1 = new Button[btnAnzahl]; 
      Button [] buttonfeld2 = new Button[btnAnzahl]; 

      for (int i = 0; i < btnAnzahl; i++ ) 
      { 
          buttonfeld1[i] = new Button(); 
          buttonfeld1[i].setActionCommand(String.valueOf(i));
          panelfeld1.add( buttonfeld1[i]); 

          buttonfeld1[i].addActionListener(new ActionListener() 
          { 
              public void actionPerformed(ActionEvent e) 
              { 
                  ((Button)e.getSource()).setLabel("x"); 
                  int j = Integer.parseInt(((Button)e.getSource()).getActionCommand());
                  btnLabels[j]="whatever you want";
              } 
          }); 
      } 


      for (int i = 0; i < btnAnzahl; i++) 
      { 
          buttonfeld2[i] = new Button(); 
          panelfeld2.add( buttonfeld2[i] ); 

      } 
      add(panelfeld1); 
      add(panelfeld2); 
  } 
}
```

Drauf achten das die Klasse genau so heißt wie die Datei (Groß/Kleinschreibung beachten), dann geht das auch!


----------



## Mathes (31. Mrz 2005)

hrhr, danke, dass mit der groß kleinschreibung weiß ich schon,
ganz so blöd stell ich mich auch nicht an*g*
auch wenns nu den anschein erweckt 
das war irgendwas anderes, aber danke für deine ausdauer, nu geht es


----------

