ich habe eine Klasse View die ich abstract machen musste wegen ActionListener ..aus einer anderen Klasse der sogenannten Start Klasse wollt ich nun eine Instanz dieser View Klasse erzeugen was natürlich nicht geht ..gibts da irgendeine Möglichkeit wie man das machen kann?
Code:
public abstract class View extends JFrame implements ActionListener
{
//...
}
//******
public abstract class Start extends View{
public static void main(String[] args)
{
View wnd = new View();
}
}
..irgendwie geht das nicht, bin für jeden Tip dankbar
die Fehlermeldung:
C:\>javac schiffeversenken/Start.java
schiffeversenken/Start.java:9: schiffeversenken.view.View is abstract; cannot b
instantiated
View wnd = new View();
schon klar, dass das nicht geht also eine instance einer abstract class, ich hoffe einfach mal, das es da irgendeine "Alternative" gibt :cry:
Wie wäre es, wenn du den ActionListener implementierst? Dann muss die Klasse nicht mehr abstrakt sein.
Code:
public class View implements ActionListener{
...
public void actionPerformed( ActionEvent e ){
// was halt so passieren soll, wenn ein ActionEvent gefunden wird
}
}
..ja daran habe ich auch schon gedacht, wir müssen jedoch nach MVC-Modell arbeiten, also View und Controller getrennt. ActionListener ist ja eher Controller oder? dadurch wird das irgendwie alles blöd.
wieso darf die View beim MVC nicht den ActionListener bekommen ??
Die View schließlich reagiert auf Sachen die in ihr passieren -> sie delegiert die Verarbeitung nur an den Controller weiter !
D.h. ich sehe es nicht als Verstoss an wenn die View den ActionListener implementiert, dieser muss dann aber die Aufgaben weiter delegieren
...lass ich dann die Funktion actionPerformed(ActionEvent event) dort mit drin? irgendwie funktioniert das dann, aber weiß nicht genau ob das dann nicht schon zum Controller gehört
...lass ich dann die Funktion actionPerformed(ActionEvent event) dort mit drin? irgendwie funktioniert das dann, aber weiß nicht genau ob das dann nicht schon zum Controller gehört
Das ist unterschiedlich. wenn die View eine abstrakte Klasse ist deren Implementierungen untersch. Verhalten bei Aktionen haben dann würde ich das implements lassen und die actionPerformed nicht in die Klasse View packen.
Wenn aber die Implementierungen von View das gleiche Verhalten haben dann würde ich schon in View den ActionListener implementieren !