eventlistener auf button-array

  • Themenstarter Themenstarter Mathes
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Mathes

Gast
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
 
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???


Code:
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); 
    } 
}
 
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.
 
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.
Code:
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); 
    } 
}
 
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 😉
 
Also hier die ganze Version :roll:
Code:
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!
 
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
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben