JavaSpieleLoverFeminine
Grünschnabel
Hallo, liebe Community,
ich schreibe an einem TicTacToe-Spiel, für welches ich mit Canvas eigene Buttons erstellt habe.
Den Buttons weiße ich einen ActionListener zu, der aber nicht aufgerufen wird.
Hier mein Code:
// in der GUI-Klasse
class GUI extends Frame implements ActionListener{
static MyButton[][] felder = new MyButton[3][3];
// Aufruf der Buttons
for (int i = 0; i <= 2; i++) {
panels = new Panel();
for (int x = 0; x <= 2; x++) {
felder[x] = new MyButton(this);
panels.add(felder[x]);
}
// MyButton-Klasse:
public class MyButton extends Canvas {
ActionListener al;
public MyButton(ActionListener al){
super();
setSize();
this.al = AWTEventMulticaster.add(this.al,al);
}
public boolean handleEvent(Event e) {
if (e.id == Event.MOUSE_ENTER) {
selected = true;
actualImage = imageSelected;
repaint();
return true;
}
if (e.id == Event.MOUSE_EXIT) {
selected = false;
if (actualImage == imageSelected) {
actualImage = image;
repaint();
}
return true;
}
return super.handleEvent(e);
}
Damit, dass die handle-Methode zusätzlich drin ist, hats wohl eher nicht zu tun? Schließlich haben das auch normale Buttons, und man kann den ActionListener zusätzlich addieren?
Hat es vielleicht damit zu tun, dass die Buttons in der GUI static sind? Ich habe das wegen einer weiteren Klasse gemacht wo ich Code ausgelagert hatte, der z. B. das Bild des jeweiligen Buttons holen sollte.
Schönen Tag
JavaSpielLoverFeminine
ich schreibe an einem TicTacToe-Spiel, für welches ich mit Canvas eigene Buttons erstellt habe.
Den Buttons weiße ich einen ActionListener zu, der aber nicht aufgerufen wird.
Hier mein Code:
// in der GUI-Klasse
class GUI extends Frame implements ActionListener{
static MyButton[][] felder = new MyButton[3][3];
// Aufruf der Buttons
for (int i = 0; i <= 2; i++) {
panels = new Panel();
for (int x = 0; x <= 2; x++) {
felder[x] = new MyButton(this);
panels.add(felder[x]);
}
// MyButton-Klasse:
public class MyButton extends Canvas {
ActionListener al;
public MyButton(ActionListener al){
super();
setSize();
this.al = AWTEventMulticaster.add(this.al,al);
}
public boolean handleEvent(Event e) {
if (e.id == Event.MOUSE_ENTER) {
selected = true;
actualImage = imageSelected;
repaint();
return true;
}
if (e.id == Event.MOUSE_EXIT) {
selected = false;
if (actualImage == imageSelected) {
actualImage = image;
repaint();
}
return true;
}
return super.handleEvent(e);
}
Damit, dass die handle-Methode zusätzlich drin ist, hats wohl eher nicht zu tun? Schließlich haben das auch normale Buttons, und man kann den ActionListener zusätzlich addieren?
Hat es vielleicht damit zu tun, dass die Buttons in der GUI static sind? Ich habe das wegen einer weiteren Klasse gemacht wo ich Code ausgelagert hatte, der z. B. das Bild des jeweiligen Buttons holen sollte.
Schönen Tag
JavaSpielLoverFeminine