Buttons Halma-Spiel

ja die idee hatte ich auch schon, dummerweise nachdem ich das alles schon getippt hatte.
Und aufgrund meines zeitdrucks ist dass hier erstmal wichtiger. Im mom ist funktionalität wichtiger als hübsches aussehen.

HalmaGUI.java:131:15: ';' expected
b.addActionListener(listener);
^

ach ja und aus reiner neugier, was macht dieses "@ Override"

EDIT: der pfeil zeigt auf den punkt
 
Hi,
sorry, in Zeile 7 habe ich aus Versehen nur ein "," eingeben, nicht ein ";". Allerdings hättest du das auch selber heraus finden können.

Das Wort @Override kennzeichnet, dass hier eine Methode aus einer Elternklasse(hier ActionListener) überschrieben wird. Wenn ihr schon Vererbung hattet, dann weißt du, von was ich rede(extends, super, etc).
Wenn nicht:
http://de.wikibooks.org/wiki/Java_Standard:_Vererbung

Ciao
DosCoder
 
oh ja stimmt das hätte mir wirklich auffallen können.

wenn ich es jetzt so mache, und
Code:
btnField[i][s]
durch
Code:
btnFeld[x][y]
ersetzt sind alle meine bilder auf den buttons weg und es passiert nix wenn ich auf einen button klicke.

wenn ich die letzte zeile
Code:
(btnFeld[x][y] = b; )
auskommentiere sind meine bilder wieder da aber leider passiert trotzdem nix wenn man draufklickt.
 
Hi
ich weiß, es ist spät am Abend.Aber: Was heißt den transferieren: übertragen. Also müssen natürlcih die Variablennamen angepasst werden, in deinem Fall also ist i gleich x und ...

Ciao
DosCoder
 
ja das habe ich ja getan!

ich dachte eig ich hätte das deutlich beschrieben
ich habe
Code:
btnField[i][s]
Code:
durch btnFeld[x][y] = b;
ersetzt!

und genau dann verschwinden die bilder von meinen Buttons.

wenn ich jetzt genau diese zeile
Code:
(btnFeld[x][y] = b; )
auskommentiere, sind meine bilder wieder da jedoch passiert in beiden fällen nichts wenn ich auf einen butten klicke

?
 
Hi,
dein Code sollte letzendlich so aussehen(ungefährt):
Java:
ActionListener listener = new ActionListener(){
     //Hier bitte den Code von Zeile 2-5 von Akeshihiro reinkopieren
  };
 for (int x=0; x<9; x++) {
      for (int y=0; y<25 ; y++ ) {
        JButton b = new JButton(),
        b.addActionListener(listener);
        btnField[x][y]  = b;
        btnFeld[x][y].setBounds(10+x*55,10+y*30,30,30);
        btnFeld[x][y].setActionCommand(""+(x+y*8));
        cp.add(btnFeld[x][y]);
        
                if(x==0 && y%2!=0){                     //nicht belegte Felder im
                  btnFeld[x][y].setVisible(false);      //Spielfeld
                }
                if(x==1 && y>1 && y<23 && y%2==0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==2 && y>2 && y<22 && y%2!=0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==3 && y>3 && y<21 && y%2==0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==4 && y>4 && y<20 && y%2!=0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==5 && y>3 && y<21 && y%2==0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==6 && y>2 && y<22 && y%2!=0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==7 && y>1 && y<23 && y%2==0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==8 && y%2!=0){
                  btnFeld[x][y].setVisible(false);
                }

                if(x==4 && y<4){                      //nicht belegte Felder oberhalb
                  btnFeld[x][y].setVisible(false);    //des Hofs
                }
                if(x==3 && y<3){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==5 && y<3){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==2 && y<2){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==6 && y<2){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==1 && y==0){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==7 && y==0){
                  btnFeld[x][y].setVisible(false);
                }

                if(x==4 && y>20){                    //nicht belegte Felder unterhalb
                  btnFeld[x][y].setVisible(false);   //des Hofs
                }
                if(x==3 && y>21){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==5 && y>21){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==2 && y>22){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==6 && y>22){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==1 && y==24){
                  btnFeld[x][y].setVisible(false);
                }
                if(x==7 && y==24){
                  btnFeld[x][y].setVisible(false);
                }
                

      }
    }
Ciao
DosCoder
 
Ganz ehrlich... Ich versteh nicht wo genau dein Problem ist. Ich habe mal den Code genommen, den du gepostet hast und angepasst und bis auf die Tatsache, dass ich nicht weiß, was deine Steuerung-Klasse macht, funktioniert das, worum du gebeten hast... Die Position des Buttons, auf den geklickt wurde, wird mit meinem geposteten Code auf der Konsole ausgegeben.

Übrigens habe ich auch noch die tausend if-Bedingungen etwas abgeändert und die Erzeugung des Buttons nach hinten verschoben, damit die unnötigen Buttons nicht erzeugt werden. Das Programm startet zwar auch mit den tausend Buttons schnell, aber es ist dennoch eine unnötige Performance-Auslastung.

Und wie gesagt, ich weiß nicht, was die Klasse Steuerung macht, vielleicht werden da die Icons gesetzt. Jedenfalls werden in HalmaGUI keine Icons gesetzt und deswegen sind die Buttons auch alle leer.

Und hier der Code:

Java:
import java.awt.Dimension;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * Beschreibung
 * 
 * @version 1.0 vom 22.04.2009
 * @author
 */

public class HalmaGUI extends JFrame {
	private static final long serialVersionUID = 2976119233557138602L;
	
	// Anfang Variablen
	// Anfang Attribute
	private JButton[][] btnFeld = new JButton[9][25];
	private ImageIcon schwarz = new ImageIcon("schwarzerPunkt.gif");
	private ImageIcon rot = new ImageIcon("roterPunkt.gif");
	private ImageIcon blau = new ImageIcon("blauerPunkt.gif");
	private ImageIcon weiß = new ImageIcon("weißerPunkt.gif");
	private ImageIcon hrot = new ImageIcon("hellroterPunkt.gif");
	private ImageIcon hblau = new ImageIcon("hellblauerPunkt.gif");

	// Ende Attribute
	// Ende Variablen

	public HalmaGUI(String title) {
		// Frame-Initialisierung
		super(title);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		int frameWidth = 793;
		int frameHeight = 810;
		setSize(frameWidth, frameHeight);

		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		int px = (d.width - getSize().width) / 2;
		int py = (d.height - getSize().height) / 2;
		setLocation(px, py);

		Panel cp = new Panel(null);
		setContentPane(cp);
		// Anfang Komponenten

		ActionListener listener = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(((JButton)e.getSource()).getLocation());
			}
		};

		for(int x = 0; x < btnFeld.length; x++) {
			for(int y = 0; y < btnFeld[x].length; y++) {
				if(x == 0 && y % 2 != 0) { // nicht belegte Felder im
					continue; // Spielfeld
				}
				if(x == 1 && y > 1 && y < 23 && y % 2 == 0) {
					continue;
				}
				if(x == 2 && y > 2 && y < 22 && y % 2 != 0) {
					continue;
				}
				if(x == 3 && y > 3 && y < 21 && y % 2 == 0) {
					continue;
				}
				if(x == 4 && y > 4 && y < 20 && y % 2 != 0) {
					continue;
				}
				if(x == 5 && y > 3 && y < 21 && y % 2 == 0) {
					continue;
				}
				if(x == 6 && y > 2 && y < 22 && y % 2 != 0) {
					continue;
				}
				if(x == 7 && y > 1 && y < 23 && y % 2 == 0) {
					continue;
				}
				if(x == 8 && y % 2 != 0) {
					continue;
				}

				if(x == 4 && y < 4) { // nicht belegte Felder oberhalb
					continue; // des Hofs
				}
				if(x == 3 && y < 3) {
					continue;
				}
				if(x == 5 && y < 3) {
					continue;
				}
				if(x == 2 && y < 2) {
					continue;
				}
				if(x == 6 && y < 2) {
					continue;
				}
				if(x == 1 && y == 0) {
					continue;
				}
				if(x == 7 && y == 0) {
					continue;
				}

				if(x == 4 && y > 20) { // nicht belegte Felder unterhalb
					continue; // des Hofs
				}
				if(x == 3 && y > 21) {
					continue;
				}
				if(x == 5 && y > 21) {
					continue;
				}
				if(x == 2 && y > 22) {
					continue;
				}
				if(x == 6 && y > 22) {
					continue;
				}
				if(x == 1 && y == 24) {
					continue;
				}
				if(x == 7 && y == 24) {
					continue;
				}

				btnFeld[x][y] = new JButton();
				btnFeld[x][y].setBounds(10 + x * 55, 10 + y * 30, 30, 30);
				btnFeld[x][y].addActionListener(listener);
				cp.add(btnFeld[x][y]);
			}
		}
		// Ende Komponenten

		setResizable(false);
		setVisible(true);

		new Steuerung(this);
	}

	public static void main(String[] args) {
		new HalmaGUI("HalmaGUI");
	}

	// Anfang Ereignisprozeduren

	// Ende Ereignisprozeduren
	// Ende Methoden

	// Anfang Methoden
	public void aktualisiereGUI(int pX, int pY, int pValue) {
		if(pValue == 0) btnFeld[pX][pY].setIcon(weiß);
		if(pValue == 1) btnFeld[pX][pY].setIcon(rot);
		if(pValue == 2) btnFeld[pX][pY].setIcon(blau);
		if(pValue == 3) btnFeld[pX][pY].setIcon(hrot);
		if(pValue == 4) btnFeld[pX][pY].setIcon(hblau);
		if(pValue == 5) btnFeld[pX][pY].setIcon(schwarz);
	}
}
 
Zuletzt bearbeitet:
Zurück