Design und Listener in verschiedenen Klassen

Status
Nicht offen für weitere Antworten.

Hamstinator

Mitglied
Hallo, ich habe grade mit Java angefangen. Da ich mit vb.Net das programmieren begonnen habe, bin ich es gewohnt das design von den events getrennt zu haben, also in verschiedenen klassen. Kann ich das in Java auch machen das ich in einer Klasse nur

Java:
public class Events{

       Irgend_Ein_Event(grade ka wie man das schreibt){
              Aktion
       }

       Noch_Ein_Event(grade ka wie man das schreibt){
              Aktion
       }

}

stehen habe und in der anderen den Teil mit dem Design?

Ich hoffe irgend jemand versteht was ich zu erklären versuche und kann mir helfen

Mfg

Hamstinator ;)
 

arthur177

Mitglied
Hi,

ich kenne mich mit VB.NET nicht aus. Ich wieß also nicht wie deine Kenntnisse sind.
Aber für die Evenents gibts in Java sogenannte Listener.
Die Listener (Zuhörer) lauschen dem Programmverlauf und gehen in bestimmte Methoden, wenn bei einer Componente, ein für den Listener bestimmtes Event ausgelöst wird. Simple und oft verwendete Listener sind beispielsweise der der MouseListener oder der ActionListener. Diese Listener sind Interfaces die deine "Event-Klassen" implementieren können und bestimmte Methoden überschreiben. Diese Methoden werden bei bestimmten Events ausgeführt. Schau dazu am besten in die Java-API.

Ich habe zur Verständlichkeit mal ein kleines Progrämmchen geschrieben. Ich hoffe du verstehst es.

Erstmal die gewünschte GUI-Klasse:
Java:
import javax.swing.JButton;
import javax.swing.JFrame;

public class Fenster extends JFrame {

	private Listener actionListener = new Listener();
	private JButton jbuttonTest = new JButton("Test");
	
	public Fenster(){
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		setzeTestButton();
		
		this.pack();
		this.setVisible(true);
	}
	
	public void setzeTestButton(){
		jbuttonTest.addActionListener(actionListener);
		this.add(jbuttonTest);
	}
	
	public static void main(String[] args){
		new Fenster();
	}
	
}


Und hier noch deine Klasse die bestimmte Events verwaltet:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Listener implements ActionListener {

	@Override
	// Diese Methode wird ausgeführt, wenn ein Action des Listeners ausgeführt wird
	public void actionPerformed(ActionEvent ae) {
		// TODO 
		System.out.println("Klick");
	}

}
Java:
 

Kaffeebohn

Bekanntes Mitglied
Hallo Hamsti,

arthur hat ja schon gut ausgeführt wie man Listener in Swing implementiert.

Beim "komplexeren" Design (also mal alles, was sich nicht über Attribute setzen lässt) fügt man dem gewünschten Objekt einen Renderer bei, bei einer JList wäre das z.B. eine Implementierung des "ListCellRenderers".

Das ist allerdings nicht soo einfach, du wirst dich da ein bisschen einlesen müssen.

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.18 Tabellen (JTable)

Hier findest du einiges dazu.

Liebe Grüße
 

Hamstinator

Mitglied
Danke das hat mir sehr weitergeholfen, aber eine Frage hätte ich da noch.
Wenn ich jetzt 2 Buttons habe und bei jedem etwas anderes ausführen lassen will, wie müsste das dann aussehen?
 

HannsW

Bekanntes Mitglied
Danke das hat mir sehr weitergeholfen, aber eine Frage hätte ich da noch.
Wenn ich jetzt 2 Buttons habe und bei jedem etwas anderes ausführen lassen will, wie müsste das dann aussehen?
Dann prüfst Du in Deinem ActionEvent, welcher Button gedrückt wurde:
[Java]
public void actionPerformed(java.awt.event.ActionEvent e) {
if (e.getSource() == Button_1)tueDies;
if (e.getSource() == Button_x)tueDas;

}[/Java]
 

Hamstinator

Mitglied
Jetzt ist mir nochmal ne Frage zu dem Thema eingefallen.
Das mit dem ActionListener funktioniert ja, aber wie siehts aus, wenn ich in dieser Klasse z. B. noch einen MouseListener haben möchte? :/

Ich habe ja

Java:
public class Listener implements ---> ActionListener <--- {

}

...
 

Marco13

Top Contributor
[c]public class Listener implements ActionListener, MouseListener[/c]

GANZ subjektiv finde ich übrigens, dass das, was bei einem Buttonklick passsiert, irgendwie eine "Einheit" sein sollte - GANZ subjektiv finde ich dafür eine eigene private Methode am geeignetsten, oder eine Methode aus einer package-privaten Klasse. Dann kann man in der GUI-Klasse mit anonymen Listenern leicht nurnoch die "Verdrahtung" zwischen Buttons und Funktionen machen
Java:
class SomeClass
{
    MainProgramObject mainProgramObject = ...


    private void buildGUI()
    {
        JButton button = new JButton("...");
        button.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                // Entweder
                oneSingleCallToPrivateMethod();
                // Oder:
                mainProgramObject.doSomething();
            } 
        });
    }

    private oneSingleCallToPrivateMethod()
    {
        mainProgramObject.doSomething();
        doSomeAdditionalGUIStuff();
    }
}

Speziell bei Abfragen der Form
Java:
if (e.getSource() == Button_1) tueDies();
if (e.getSource() == Button_x) tueDas();
sollte man vorsichtig sein, und WENN man das macht, dann sollte man wie in dem Beispiel wirklich nur einzelne Methoden aufrufen. Wenn man dort sowas hat wie
Java:
if (e.getSource() == Button_1)
{
    // 100 Zeilen
}
if (e.getSource() == Button_x)
{
    // 100 Zeilen
}
...
Wird's irgendwann schwer, diesen Monster-Listener wieder auseinanderzuklamüsern...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D was ist der vorteil vom Builder-design pattern? Java Basics - Anfänger-Themen 11
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
A Frage zum UML Design Java Basics - Anfänger-Themen 1
F Design pattern Java Basics - Anfänger-Themen 29
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
N design time vs build time vs compile time Java Basics - Anfänger-Themen 2
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
M LookandFeel Design Java Basics - Anfänger-Themen 4
D Design Pattern Command Java Basics - Anfänger-Themen 3
M Erste Schritte Eclipse + design view Java Basics - Anfänger-Themen 3
J Design Patterns Java Basics - Anfänger-Themen 8
Tarrew Proxy Design-Pattern Java Basics - Anfänger-Themen 1
D Besseres Design Frage Java Basics - Anfänger-Themen 1
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
J MVC- Design Frage Java Basics - Anfänger-Themen 3
C Java Klassen Design? Java Basics - Anfänger-Themen 5
OnDemand Software-Design Java Basics - Anfänger-Themen 1
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
B Warum haben Java Programme ein anderes Design? Java Basics - Anfänger-Themen 5
S Singleton (Design Patterns) Java Basics - Anfänger-Themen 16
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
Rudolf OOP Übungen zu Design Pattern in Java Java Basics - Anfänger-Themen 6
K Interface als Instanzvariable = gutes Design Java Basics - Anfänger-Themen 6
S Eclipse Design-Reiter fehlt Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Button mit eigenem Design Java Basics - Anfänger-Themen 6
R Welches Design pattern Java Basics - Anfänger-Themen 10
S Gutes Design mit statischen oder Member-Methoden Java Basics - Anfänger-Themen 53
X Externer GUI Code verwenden / (Design Ansicht) Java Basics - Anfänger-Themen 3
B OOP Frage zu Klassen Design Java Basics - Anfänger-Themen 5
J Methoden design Java Basics - Anfänger-Themen 3
hdi Design-Problem Java Basics - Anfänger-Themen 2
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
Q Listen - DefaultListModel trotz Design ueber GUI? Java Basics - Anfänger-Themen 10
B Java-Anwendung im Windows Design Java Basics - Anfänger-Themen 8
hdi Design-Frage: bin unzufrieden Java Basics - Anfänger-Themen 11
M code design Java Basics - Anfänger-Themen 14
M log4j design Java Basics - Anfänger-Themen 11
D Design Fragen Java Basics - Anfänger-Themen 5
M Design: Abfrage auf korrekte Eingabe Java Basics - Anfänger-Themen 4
W Design Problem Java Basics - Anfänger-Themen 7
T Wie wichtig ist Design Patterns in einer Firma? Java Basics - Anfänger-Themen 8
M Java Design Frage Java Basics - Anfänger-Themen 2
S log4j "Richtiges" Design Java Basics - Anfänger-Themen 4
D JButton - Design ändern Java Basics - Anfänger-Themen 8
S Frage zum Design der Vererbung (Kartendeck und Dupletten) Java Basics - Anfänger-Themen 12
S Design Frage Java Basics - Anfänger-Themen 5
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
D String value change listener Java Basics - Anfänger-Themen 2
topi WindowAdapter / Listener / Event Java Basics - Anfänger-Themen 4
L Problem mit Listener Java Basics - Anfänger-Themen 0
P Listener registrieren Java Basics - Anfänger-Themen 40
Salo JTabel Selection listener Bsp. Java Basics - Anfänger-Themen 3
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
J Verständnis Problem Java-Listener. Java Basics - Anfänger-Themen 59
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
F Listener schreiben Java Basics - Anfänger-Themen 1
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
B Listener beim Laden (deserialize) wieder hinzufügen bzw. mitspeichern? Java Basics - Anfänger-Themen 3
J Listener Java Basics - Anfänger-Themen 4
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
llabusch Kombinationsfeld - LISTENER Java Basics - Anfänger-Themen 0
S Eigenen Listener zu eigenen Button! Java Basics - Anfänger-Themen 5
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
K On Click listener Problem Java Basics - Anfänger-Themen 4
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
G Listener ohne Objekt Java Basics - Anfänger-Themen 5
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
H Eigenen Listener einbauen Java Basics - Anfänger-Themen 5
K Key Listener bei 2 gleichzeitig gedrückten tasten Java Basics - Anfänger-Themen 3
M Bäume und Listener Java Basics - Anfänger-Themen 2
K Erste Schritte table Listener noob frage Java Basics - Anfänger-Themen 3
E eigenständige Listener-Klasse Java Basics - Anfänger-Themen 9
T Motion listener Java Basics - Anfänger-Themen 10
U Listener erstellen Java Basics - Anfänger-Themen 16
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
M listener Java Basics - Anfänger-Themen 16
L Listener Problem in Klasse Java Basics - Anfänger-Themen 8
P Listener für mehrere Buttons Java Basics - Anfänger-Themen 3
L Window Listener Java Basics - Anfänger-Themen 2
Kenan89 JTable: Listener Java Basics - Anfänger-Themen 4
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
A action listener Java Basics - Anfänger-Themen 8
M Netbeans Listener - Anonymous, inner class, main class? Java Basics - Anfänger-Themen 4
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
E Mehrere Listener auf einen Button? Java Basics - Anfänger-Themen 3
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
X Problem bezüglich Key Listener Java Basics - Anfänger-Themen 3
Y Button hört nicht auf Listener Java Basics - Anfänger-Themen 5
H JTable, Listener und CellEditor Java Basics - Anfänger-Themen 8
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
M Listener Objekte Java Basics - Anfänger-Themen 12
S Applet Key Listener Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben