Hallo zusammen,
ich habe den ActionListener in eine eigene Klasse ausgelagert.Wenn ich nun den ActionListener in der Main-Klasse dem Button zuordne, dann bekomme ich einen Fehler bei der erzeugung des Buttons selbst.
Hier die Klasse mit dem ActionListener:
Hier ist die Main-Klasse, wo der Button erzeugt wird.
Hier wird auch der ActionListener beim Button angemeldet.
Warum?
ich habe den ActionListener in eine eigene Klasse ausgelagert.Wenn ich nun den ActionListener in der Main-Klasse dem Button zuordne, dann bekomme ich einen Fehler bei der erzeugung des Buttons selbst.
Hier die Klasse mit dem ActionListener:
Java:
package Bibliotheken;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class Button extends JButton implements ActionListener {
public static int richtung;
public JButton button;
//public JButton button1;
//public JButton button2;
//public JButton button3;
public Button(JButton button){
this.button = button;
this.setSize(90, 20);
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource() == button){
//richtung = 1;
System.out.println("Es hat funktioniert!");
}
/*
else if(event.getSource() == this.button1){
richtung = 2;
}
else if(event.getSource() == this.button2){
richtung = 3;
}
else if(event.getSource() == this.button3){
richtung = 4;
}
*/
}
public int getRichtung(){
return richtung;
}
}
Hier ist die Main-Klasse, wo der Button erzeugt wird.
Hier wird auch der ActionListener beim Button angemeldet.
Java:
package Bibliotheken;
import java.awt.event.ActionEvent;
public class Hauptfenster {
public static int richtungsangabe;
public static int xpos;
public static int ypos;
public static Spieler spieler;
public static Rahmen spielfeld ;
public Button button;
public static Button up;
public static Button down;
public static Button left;
public static Button rigth;
public static Button stop;
public Hauptfenster(){
spielfeld = new Rahmen();
spieler = new Spieler();
up = new Button(); // Hier ist "new Button rot unterstrichen"
up.addActionListener(new Button(up));
//down = new Button();
//down.addActionListener(new Button(übergabe));
//left = new Button();
//left.addActionListener(new Button(übergabe));
//rigth = new Button();
//rigth.addActionListener(new Button(übergabe));
//stop = new Button();
//stop.addActionListener(new Button(übergabe));
up.setText("AUF");
down.setText("RUNTER");
left.setText("LINKS");
rigth.setText("RECHTS");
stop.setText("STOP");
up.setLocation(30, 520);
down.setLocation(150, 520);
left.setLocation(280, 520);
rigth.setLocation(400, 520);
stop.setLocation(500, 520);
spielfeld.add(up);
spielfeld.add(down);
spielfeld.add(left);
spielfeld.add(rigth);
spielfeld.add(stop);
spielfeld.add(spieler);
}
public static void main(String[] args) {
Hauptfenster fenster = new Hauptfenster();
while(true){
up.getRichtung();
down.getRichtung();
left.getRichtung();
rigth.getRichtung();
if(richtungsangabe == 1){ // AUF
ypos = + 1;
}
else if(richtungsangabe == 2){ // RUNTER
ypos = - 1;
}
else if(richtungsangabe == 3){ // RECHTS
xpos = + 1;
}
else if(richtungsangabe == 4){ // LINKS
xpos = - 1;
}
spieler.setXpos(xpos);
spieler.setYpos(ypos);
spielfeld.repaint();
}
}
}
Warum?