Probleme beim Aufruf von Listener in anderer Klasse

MaikHSW

Aktives Mitglied
Hey zusammen.
Ich bin momentan dabei mich an einem Projekt zu üben.
Dort wollte ich eigentlich GUI und Logik sauber in verschiedene Klassen trennen für die bessere Übersichtlichkeit.
Nun habe ich in meiner GUI einen Button definiert:

Java:
		Button startbutton = new Button();
		startbutton.setLabel("Start");
		startbutton.setBounds(36, 120, 132, 26);
		add(startbutton);

Soweit geht das auch.
Nur den Eventlistener wollte ich nun in die Logikklase auslagern da die GUI wirklich nur GUI sein soll.
Deklaration des Eventlisteners:
Java:
	class startbutton implements ActionListener
	{
		public void actionPerformed(ActionEvent evt)
		{Frame Fehler= new Frame ("Fehlermeldung");
			
	}
Das geht auch, solange er in einer Klasse mit dem Button bleibt.
Wechselt er die Klasse geht nichts mehr....

Ich rufe den Listener wie folgt auf:
Java:
startbutton.addActionListener(new startbutton());
So kann er ihn ja erstmal nur innerhalb der Klasse kennen.
Aber auch wenn ich ihn in der anderen Klasse als Public deklariere wird er nicht gesehen,
selbst eine Angabe in der Form "Klasse.Methode" bringt mich nicht weiter.

In der FH hat man sowas immer in eine Klasse gepackt, das geht bei kleinen und kurzen Projekten auch sicher.
Nur je größer das Projekt umso mehr Chaos erzeugt dieses Vorgehen ja.
Wahrscheinlich ist die Lösung auch banaler denn je,
aber kann sie mir einer von euch nennen?
Danke für eure Mühe.



Gruß
 

Spin

Top Contributor
Wie meinst du dass den mit dem wechseln der Klasse?

Günstiger wäre es , wenn dein Button anders als dein Listener heißt.
Zudem würde ich dir JOptionPane empfehlen für Fehler meldungen.

Passiert denn kein Aufruf des Fensters?
Also passiert nichts beim Klicken?

Java:
 public void actionPerformed(ActionEvent event) {
        System.out.println(event.getActionCommand());
    }

Versuch doch sonst einfach mal ne Konsolenausgabe.
Sonst scheint dein Code doch richtig.
Also anhand was du hier postest kann ich nichts erkennen...:autsch:

gruß
 

MaikHSW

Aktives Mitglied
Hey Spin.
JOptionPane bevorzuge ich für Fehlermeldungen auch,
der Schnippsel ist nur kopiert um was zu haben.
Also mein Problem:
Der Button ist in der Klasse startgui definiert und deklariert.
Nun soll der Listener aber in die Klasse startlogic,
da ich diesen bereits als Teil der Logik sehe und somit trennen möchte.
Dies klappt jedoch nicht.
Kannst du dir nun vorstellen was ich meine?
Solange alles in der Klasse startgui abläuft geht es auch,
aber genau das will ich ja umgehen insofern möglich.
War vielleicht etwas unglücklich beschrieben.


Gruß
 

javimka

Top Contributor
Wenn die innere Klasse StartButton (Klassen gross schreiben) in einer anderen Klasse ist, als wo sie gebraucht wird, musst du sie folgendermassen instanzieren:
Wenn sie static ist, mit [c]new AndereKlasse.StartButton()[/c] erstellen.
Wenn sie nicht static ist, brauchst du zuerst ein Objekt der anderen Klasse:
[c]AndereKlasse ak = new AndereKlasse; StartButton sb = ak.new StartButton()[/c]
oder direkt, aber schlecht:
[c] StartButton sb = new AndereKlasse().new StartButton()[/c].

Aber eigentlich sollte das nicht nötig sein. Wenn du Logik und GUI sauber trennen willst, kann es doch nicht sein, dass die eine Klasse eine Klasse verwendet, die in der anderen Klasse liegt ;)
Vielleicht hast du schon vom MVC Prinzip gehört, das geht noch weiter und trennt Logik in Model und Controller auf. Dazu gibt es bereits einige Beiträge im Forum und der FAQ.
Ich würde den Listener in die GUI verfrachten.
 

Spin

Top Contributor
Java:
/**
 *
 * @author Spin
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class StartGui extends JFrame {

    public StartGui(String title) {
        super(title);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500, 500);


        this.setLayout(null);
        Button startbutton = new Button();
        startbutton.setLabel("Start");
        startbutton.setBounds(36, 120, 132, 26);
        startbutton.addActionListener(new StartLogic());
        add(startbutton);
        
        this.setVisible(true);

    }
    
    public static void main (String[]args) {
        
        new StartGui("Prgrammi");
//        new test();

    }
}

class StartLogic implements ActionListener {

    public void actionPerformed(ActionEvent evt) {
        JOptionPane.showInputDialog("Fehler");

    }
}


Haut doch alles hin , gruß :9
 

MaikHSW

Aktives Mitglied
Hey zusammen.
@ Javimka
Danke erstmal für deine Hinweise.
Mit Design kenne ich mich noch gar nicht aus da ich erstmal in Java selbst herein finden und mich näher damit beschäftigen muß.
Design bzw. Patterns sind ein weiterer Punkt auf meine großen Liste.
Listener in die GUI ist nicht so der Hit,
weil einige Listener auch später komplexere Rechnungen und Abläufe in sich darstellen sollen.
Sonst müßte ich die wieder auslagern und das wäre für mich aktuell noch nicht so logisch.
Ich schaue mir aber die FAQ mal an, dümmer sterben kann ich ja erstmal nicht.
@ Spin
Dir natürlich auch erstmal ein großes Danke für deine Mühe.
Genau so geht es auch.
So habe ich es ja bisher realisiert,
das passt mir aber nicht.
Ich will die Klassen komplett trennen,
das heißt in Eclipse als zwei eigenständige Dokumente sehen (doof erklärt aber ich kann es aktuell nicht besser)
Verstehst du was ich meine?
Sonst kommt man wieder zu so Monsterklassen die zwar im ersten Moment schnell und leicht gemacht sind,
im zweiten aber durch eine nahezu unmögliche Wartbarkeit gerächt werden.
Genau dies möchte ich tunlichst vermeiden da das aktuelle Projekt schon längerfristig laufen und erweiterbar sein soll.



Gruß
 

Spin

Top Contributor
Java:
import javax.swing.*;
import java.awt.event.*;
public class StartLogic implements ActionListener {

    public void actionPerformed(ActionEvent evt) {
        JOptionPane.showInputDialog("Fehler");

    }
}

Denn nimm die innere Klasse raus und pack sie ( wie oben) einfach in eine neue, schreib publick davor fertig.

Ich verstehe dein Problem nicht..
Mein Listener kennt nichts von der Gui. Nur die Gui kennt den Listener, gruß
 

MaikHSW

Aktives Mitglied
Hey Spin.
Genau dies habe ich auch getan.
Dann habe ich aber keinen direkten Aufruf machen können.
Ich werde es nun testen wie Javimka es vorgeschlagen hat.
Wird zwar nicht die sauberste Lösung, aber sei es drum.
Mit der Zeit und wachsender Erfahrung kann ich immer noch ein Refactoring machen.



Gruß
 

Spin

Top Contributor
Äh , aber bei mir funktioniert das. .

änder doch mal : dein aufruf.
Also schreib mal JOption pane rein.
So wie ich es habe, denn sollte es auch gehen.:autsch:
 

MaikHSW

Aktives Mitglied
Hey Spin.
AKtuell bin ich nicht zuhause und habe somit auch kein Zugriff auf mein Eclipse (ich nehme mir bald nen Stick mit Eclipse und Workspace mit....)
Sobald ich zurück bin und einen Moment Zeit finde baue ich das mal so wie du es vorgegeben hast.
Dann schaue ich mal was passiert,
vielleicht liegt der Fehler ja auch bei mir und ich habe irgendwas anders gemacht.
Ich werde berichten,
danke für deine Mühe.


Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J probleme beim wieder aufruf Java Basics - Anfänger-Themen 2
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M OOP Probleme beim Funktionsaufruf, Java OpenCV Java Basics - Anfänger-Themen 0
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
F Probleme beim Übersetzen Java Basics - Anfänger-Themen 7
O Probleme beim import von Projekten in Eclipse Java Basics - Anfänger-Themen 7
C OOP Probleme beim Addieren von Arrays Java Basics - Anfänger-Themen 4
N Probleme beim entfernen eines JPanels Java Basics - Anfänger-Themen 4
J Probleme beim JRadioButton Java Basics - Anfänger-Themen 2
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
C Probleme beim Array Java Basics - Anfänger-Themen 6
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
T Probleme beim casten Java Basics - Anfänger-Themen 9
C Input/Output Probleme beim .jar erstellen Java Basics - Anfänger-Themen 5
M Klassen Probleme beim Debuggen - Datentypkonvertierung - Speichern in Datei Java Basics - Anfänger-Themen 7
W Probleme beim Wiedereinstieg Java Basics - Anfänger-Themen 25
P Interpreter-Fehler Probleme beim Ausführen einer Jar Datei Java Basics - Anfänger-Themen 2
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
F Probleme beim umwandeln von String in Int Java Basics - Anfänger-Themen 10
M Kontaktbuch - Probleme beim Input Java Basics - Anfänger-Themen 3
H Probleme beim erzeugen einer Headerdatei mit javah Java Basics - Anfänger-Themen 3
T Interpreter-Fehler Probleme beim .jar ausführen mit JRE 64bit Java Basics - Anfänger-Themen 9
M Probleme beim Beenden eines Threads Java Basics - Anfänger-Themen 25
A Probleme beim erstellen einer lauffähigen jar Java Basics - Anfänger-Themen 3
A Probleme beim IntervallCheck Java Basics - Anfänger-Themen 4
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
I Probleme beim Laden einer .gif-Datei. Java Basics - Anfänger-Themen 8
I Probleme beim Laden eins BufferedImage Java Basics - Anfänger-Themen 8
Sebi Probleme beim Kompilieren Java Basics - Anfänger-Themen 11
I Probleme beim adden von Elementen in einer ArrayList Java Basics - Anfänger-Themen 10
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
L Probleme beim Ausführen des Programms Java Basics - Anfänger-Themen 9
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G Probleme beim Zufügen eines JLabels Java Basics - Anfänger-Themen 18
M Probleme beim Jar erstellen Java Basics - Anfänger-Themen 7
M Probleme beim Objekzugriff auf andere Klasse: NullPointerExc Java Basics - Anfänger-Themen 5
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
A Memory Probleme beim Laden von thumbnails Java Basics - Anfänger-Themen 3
G Probleme beim Login (Webservice) Java Basics - Anfänger-Themen 4
B Probleme beim Kompilieren. Java Basics - Anfänger-Themen 12
M probleme beim parsen Java Basics - Anfänger-Themen 7
R Probleme beim Repaint Java Basics - Anfänger-Themen 3
M probleme beim applet einbinden Java Basics - Anfänger-Themen 7
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
M Probleme beim Datei auslesen Java Basics - Anfänger-Themen 6
M Probleme beim Compileren Java Basics - Anfänger-Themen 29
I Probleme beim ausführen des Programms Java Basics - Anfänger-Themen 6
kulturfenster Probleme beim Erstellen von Objekten Java Basics - Anfänger-Themen 15
kulturfenster Probleme beim Zeichnen einer Geraden Java Basics - Anfänger-Themen 8
S Probleme beim Java Kompilieren + ausführen Java Basics - Anfänger-Themen 6
M probleme beim kompilieren / übersetzen ! Systemeinstellung ? Java Basics - Anfänger-Themen 5
I Probleme beim Ausführen von Anwendungen Java Basics - Anfänger-Themen 2
S Probleme mit Datentyp beim Einlesen Java Basics - Anfänger-Themen 4
I java - probleme beim complimieren Java Basics - Anfänger-Themen 4
L Probleme beim ersten JavaProgramm! Java Basics - Anfänger-Themen 4
P Probleme beim Exportieren einer jar datei Java Basics - Anfänger-Themen 8
M Probleme beim Strich(e) zwichen Java Basics - Anfänger-Themen 3
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
M Probleme beim Zuweisen eines Arbeitsverzeichnis Java Basics - Anfänger-Themen 2
A Probleme beim char-Vergleich! Java Basics - Anfänger-Themen 9
G Probleme beim Compilieren Java Basics - Anfänger-Themen 6
J Probleme beim Vererben Java Basics - Anfänger-Themen 2
B Probleme beim Dateien auslesen Java Basics - Anfänger-Themen 12
C Probleme beim overloaden. Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
X probleme beim import Java Basics - Anfänger-Themen 3
S Probleme beim Füllen einer HashMap Java Basics - Anfänger-Themen 15
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
I Probleme beim Ansprechen eines Arrays Java Basics - Anfänger-Themen 12
T Probleme beim Einlesen eines Strings Java Basics - Anfänger-Themen 3
K Neuronales Netz in Java und Probleme beim Konfigurieren Java Basics - Anfänger-Themen 2
N Probleme beim generieren von Objekten Java Basics - Anfänger-Themen 2
G Unknown Source Probleme beim Starten des Prgramms Java Basics - Anfänger-Themen 2
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben