WindowStateListener selbst implementieren

MBoerner

Mitglied
Guten Tag!

Ich möchte gern dass meine Fenstern (Frames) ein selbst programmiertes WindowsStateListener namens "FrameEventHandler " haben.
Ich möchte zum Beispiel, dass alle WindowEvents eine zeile ausgeben. Ich habe es so gemacht:
Im Frame:
Attribut:
protected FrameEventHandler eventHandler;
Im Constructor:
eventHandler = new FrameEventHandler(this);
this.addWindowStateListener(eventHandler);

Die klasse "FrameEventHandler" enthält eine Funktion windowStateChanged und ist so:
"
public class FrameEventHandler extends WindowAdapter{
….
@Override
public void windowStateChanged(WindowEvent we){

//Event anzeigen
System.out.println("windowStateChanged"+ we.toString());

}
Ich möchte bewusst eine eigene Klasse für den neuen WindowStateListener.
Ich sehe zwar, dass ein neues FrameEventhandler gebaut wird, aber die FunktionwindowStateChanged wird nie ausgeführt, egal, was ich mit dem Fenster mache (schliessen, verkleinern, etc...)
Kann mir jemand erklären was fehlt?

Vielen Dank im Voraus
 

mihe7

Top Contributor
Hast Du auch minimieren, maximieren probiert? Wenn ja, dann poste mal kompletten Code (bitte in Code-Tags setzen: [code=Java]Dein Code[/code])
 

MBoerner

Mitglied
Entschuldigung, mein Notebook war eine Weile außer Gefecht.
Hier ist der Code der Klasse, die ich als EventHandler benutzen möchte:
Java:
import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;
import java.util.Enumeration;
public class FrameEventHandler extends WindowAdapter{
   
     private DokumentAusgabeIF ausgabeModel;
     private int zeile, spalte;
     Hashtable modelTable;
     Object key;
     private DokumentAusgabe ausgabe;
    
  /**
     *Diese Funktion schliesst das Frame und beendet das Ton abspielen
     *wenn es ein Ton/MP3 Dokument war
     *@param we WindowsEvent
   
     */
     @Override
     public void windowStateChanged(WindowEvent we){
       System.out.println("frameEventHandler WindowsEvent");  
     }
    
     public void windowClosing(WindowEvent we) {
       System.out.println("frameEventHandler WindowsClosing");
       ausgabe.actionBeenden();
     }
    
     public FrameEventHandler(DokumentAusgabe ausgabe)
     {
         System.out.println("frameEventHandler");
      modelTable = new Hashtable();
      addModel(ausgabe);
     }
    
     public void addModel(DokumentAusgabe model) {
      key=new Integer(model.hashCode());
      modelTable.put(key, model);
     }
    
     public void removeModel(DokumentAusgabe ausgabe) {
      key=new Integer(ausgabe.hashCode());
      modelTable.remove(key);
     }

Und hier ist der Code, vom Frame, bei dem ich den WindowState in einer separaten Klasse behandeln möchte
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.WindowEvent;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class DokumentAusgabe extends JFrame{
   
    static public LinkedList fensterListe= new LinkedList();
    protected int topInset;
    protected static Dimension mainSize;
    protected FrameEventHandler eventHandler;
   
    private static final int  X_POS=200;
    private static final int  Y_POS=200;
    private static final int  INDENT=30;
   
    public DokumentAusgabe() {
       }
   
    public DokumentAusgabe(Dimension mainSize) {
 this.mainSize = mainSize;
    }
   
   
   
    public void erzeugeFenster(DokumentAusgabe ausgabe, Dokument doc, String titel) {
 int index;
 this.setTitle(titel);
 this.setSize(300,100);
 this.topInset = Main.getTopInset();
 
 index= addAusgabeToList((JFrame)this);
 this.setLocation(Main.getTopInset()+ this.mainSize.width + (index*INDENT), Y_POS + (index*INDENT));
 this.setResizable(false);
 this.setVisible(true);
 eventHandler = new FrameEventHandler(ausgabe);
 ausgabe.addWindowStateListener(eventHandler);
    }
Die Funktion "erzeugeFenster" wird ausgeführt, wenn ich ein Fenster öffne (ein Frame "ausgabe")
In der Ausgabe sehe ich "frameEventHandler" also wird der Konstruktor von "FrameEventHandler" ausgeführt.
Aber wenn ich ein Fenster "ausgabe" Schliessen, wird es zwar geschlossen aber keine Funktion von "frameEventHandler" wird ausgeführt

Was mache ich das falsch?
Vielen Dank im Voraus
 

mrBrown

Super-Moderator
Mitarbeiter
Zeig mal, wo du Fenster erzeugst.

Das da mit ausgabe und this in der Methode den gleichen Typ haben und beide benutzt werden, ist zumindest verdächtig, vermutlich erzeugst du zwei Fenster, von denen nur eins angezeigt wird
 

MBoerner

Mitglied
Das Fenster wird erzeugt, wenn man auf einen Knoten in einem Treeview doppelklickt.
Jeder Knoten ist entweder ein Ordner, ein Bild oder ein Tondokument.
Die Klasse DokumentAusgabe erbt von JFrame

Java:
package medien;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class BildDokumentAusgabe  extends DokumentAusgabe implements DokumentAusgabeIF{
  
    private Image bild;
    private String bildName;
  
    public BildDokumentAusgabe(BildDokument bildDokument) {
 
 bildName = bildDokument.getName();
 [B]erzeugeFenster[/B](this, (Dokument) bildDokument, "BilddokumentAusgabe Ausgabe");
 if(this.bildLaden(bildDokument.getFilePath())) {
     this.setSize(this.limitSize(bild.getWidth(this), bild.getHeight(this)));
 }
 else
 {
     this.setSize(400,  100);
 }
 this.setContentPane(new JPanel() {
     @Override
     public void paintComponent(Graphics g) {
  g.drawImage(bild,  0, 0, this);
     }
   
 });

    }
  
 
 
    private boolean bildLaden(String filePath) {
 
 
 this.bild = Toolkit.getDefaultToolkit().getImage(filePath);
     MediaTracker tracker = new MediaTracker(this);
     tracker.addImage(this.bild, 0);
     try {
   tracker.waitForID(0);
   return true;
 }
 catch (InterruptedException ie){
   System.out.println(ie.toString() + " beim Laden des Bildes "+ filePath);
   return false;
 }
 
    }
 

mrBrown

Super-Moderator
Mitarbeiter
Erstmal: Wenn du irgendwo casten musst, machst du was falsch. Alle casts in deinem Code sind überflüssig und machen das ganze nur schlechter lesbar.

Dann: an eine Methode von sich selbst this zu übergeben, ist Unsinn und nur Fehlerquelle, streich das auch aus deinem obigen Code.

Dann: erbe nicht von Frame, sondern nutz einfach ein JFrame.

Dann: Generics gibts nicht ohne Grund.

Und dann der Grund für den Probleme: nutz addWindowListener anstatt addWindowStateListener
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Rest mit Spring boot oder selbst anlegen Java Basics - Anfänger-Themen 14
B Hotkeys selbst definieren? Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
I Klasse selbst fortlaufend nummerieren lassen Java Basics - Anfänger-Themen 11
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
G MapStruct Anwendung vom selbst geschriebenen Formater Java Basics - Anfänger-Themen 4
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
I TreePath selbst erstellen und expandPath Java Basics - Anfänger-Themen 6
O Werte selbst eintragen Java Basics - Anfänger-Themen 9
T Selbst erstellten Dateityp mit java Programm assoziieren? Java Basics - Anfänger-Themen 4
K Selbst renderndes Object auf null setzen Java Basics - Anfänger-Themen 1
M Eclipse startet nicht mehr (eclipse.exe beendet sich selbst)? Java Basics - Anfänger-Themen 5
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8
M Java Bukkit Plugin (selbst erstellt) Java Basics - Anfänger-Themen 9
S Listen Klasse selbst schreiben Java Basics - Anfänger-Themen 6
B Methoden Methode lässt sich nicht selbst aufrufen? Java Basics - Anfänger-Themen 3
H JFileChooser... dateispeicherpfad selbst aussuchen Java Basics - Anfänger-Themen 4
L Klassen Kann eine Klasse sich selbst returnen? Java Basics - Anfänger-Themen 26
T methode ruft sich selbst auf Java Basics - Anfänger-Themen 28
J importieren von selbst definierten klassen Java Basics - Anfänger-Themen 10
M JButton selbst nachprogrammieren Java Basics - Anfänger-Themen 3
J selbst erstellte Hashtabelle -- Warum Exception? Java Basics - Anfänger-Themen 3
K indexOf selbst rekursiv definieren Java Basics - Anfänger-Themen 4
M selbst gezipptes File lässt sich nicht öffnen Java Basics - Anfänger-Themen 2
S Deserialisieren auf sich selbst Java Basics - Anfänger-Themen 4
Developer_X JButton removt sich selbst Java Basics - Anfänger-Themen 32
G isEmpty selbst realisieren Java Basics - Anfänger-Themen 47
R Ein/Ausleseproblem von Datei mit selbst erstellten Objekten Java Basics - Anfänger-Themen 10
M "Selbst erstellte" Buttons nicht sichtbar. Java Basics - Anfänger-Themen 20
D Bei Event soll Instanz sich selbst löschen Java Basics - Anfänger-Themen 4
K Wieso schaltet meine CheckBox von selbst um ? Java Basics - Anfänger-Themen 31
F JOptionPane selbst programmieren Java Basics - Anfänger-Themen 8
E Eine Klasse hat eine Instanz von sich selbst. Java Basics - Anfänger-Themen 6
L vor- und zurückblättern selbst gemacht Java Basics - Anfänger-Themen 18
G Button selbst entwerfen Java Basics - Anfänger-Themen 9
G Mit "instanceof" sich selbst Fragen? Java Basics - Anfänger-Themen 4
G Array von selbst-definiertem Typ Java Basics - Anfänger-Themen 3
R Comparable Interface Funktionalität selbst programmieren? Java Basics - Anfänger-Themen 3
B Programm sich selbst neu starten lassen Java Basics - Anfänger-Themen 8
D Thread soll sich selbst beenden Java Basics - Anfänger-Themen 8
G Objektarray mit sich selbst rekombinieren Java Basics - Anfänger-Themen 5
B Objekt soll sich selbst löschen Java Basics - Anfänger-Themen 25
K Vector mit sich selbst vergleichen Java Basics - Anfänger-Themen 2
rambozola selbst definierte exception abfangen funzt nicht Java Basics - Anfänger-Themen 14
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
P9cman Ampel in Java implementieren Java Basics - Anfänger-Themen 3
districon Generics implementieren Java Basics - Anfänger-Themen 2
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
R Taxistand Implementieren Java Basics - Anfänger-Themen 1
Gaudimagspam BMI in Java implementieren Java Basics - Anfänger-Themen 38
T Methode implementieren Java Basics - Anfänger-Themen 21
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B UML-Klassendiagram get und set implementieren Java Basics - Anfänger-Themen 2
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
E Klassen implementieren Java Basics - Anfänger-Themen 94
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
N Stacks und Queues Implementieren Java Basics - Anfänger-Themen 2
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
X Polynome implementieren Java Basics - Anfänger-Themen 3
O Methoden implementieren, Sichtbarkeiten, Brüche Java Basics - Anfänger-Themen 104
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
D Erste Schritte Befehl back implementieren Java Basics - Anfänger-Themen 18
B Formel in Java implementieren Java Basics - Anfänger-Themen 4
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
S Implementieren zweier Klassen Java Basics - Anfänger-Themen 5
Hacer Interfaces implementieren Java Basics - Anfänger-Themen 7
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
K Klassen implementieren Java Basics - Anfänger-Themen 7
W Neue Klassenmethode implementieren.. Java Basics - Anfänger-Themen 6
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
T Equal Methode implementieren Java Basics - Anfänger-Themen 22
C ZahlenMuster implementieren Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben