Hallo Leute!
Ich habe hier einen Button-Array...
Der Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
Wenn ich die Zeile 42 rausnehme gibt es keinen Fehler.
Wäre sehr nett, wenn mir jemand helfen könnte!
Ich habe hier einen Button-Array...
Code:
import java.util.ArrayList;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Pokercheat {
static int farbe, wert;
public static void main(String[] args) {
Karte karte = new Karte(0,0);
// Display wird erstellt
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Kartenspiel");
shell.setBounds(0, 0, 900, 600);
final Button[][] buttonArray = new Button[4][13];
ArrayList<Karte> gesamtKarten = new ArrayList<Karte>();
for(farbe=0;farbe<=3;farbe++) {
for(wert=0;wert<=12;wert++) {
karte.setFarbe(farbe);
karte.setWert(wert+2);
gesamtKarten.add(karte);
buttonArray[farbe][wert] = new Button(shell, SWT.PUSH);
buttonArray[farbe][wert].setText(karte.toString());
buttonArray[farbe][wert].setBounds(20+100*farbe, 20+40*wert, 80, 30);
}
}
for(farbe=0;farbe<=3;farbe++) {
for(wert=0;wert<=12;wert++) {
buttonArray[farbe][wert].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Button gedrückt");
System.out.println(buttonArray[farbe][wert].getText()); <<=== Hier spackt er ab.
}
});
}
}
shell.open();
while (!shell.isDisposed())
if (!display.readAndDispatch())
display.sleep();
}
}
Code:
public class Karte {
private int farbe; // 0: Karo, 1: Hertz, 2: Kreuz,, 3: Piek
private int wert; // 2 = Zwei, 11 = Bubbe, 14 = Ass
public Karte(int farbe, int wert) {
super();
this.farbe = farbe;
this.wert = wert;
}
public String toString() {
StringBuffer sb = new StringBuffer();
// Farbe im StringBuffer speichern
if(farbe==0) {
sb.append("Karo").append(" ");
} else if(farbe==1) {
sb.append("Hertz").append(" ");
} else if(farbe==2) {
sb.append("Kreuz").append(" ");
} else if(farbe==3) {
sb.append("Piek").append(" ");
}
// Wert im StringBuffer speichern
if(wert<=10) {
sb.append(wert);
} else if(wert==11) {
sb.append("B");
} else if(wert==12) {
sb.append("D");
} else if(wert==13) {
sb.append("K");
} else if(wert==14) {
sb.append("A");
}
return sb.toString();
}
// Setters & Getters
public int getFarbe() {
return farbe;
}
public void setFarbe(int farbe) {
this.farbe = farbe;
}
public int getWert() {
return wert;
}
public void setWert(int wert) {
this.wert = wert;
}
}
Der Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
Wenn ich die Zeile 42 rausnehme gibt es keinen Fehler.
Wäre sehr nett, wenn mir jemand helfen könnte!