Swing Frame schließt ganzes Programm(Jasperreport)

Java_Cracker

Mitglied
Guten Morgen,

ich hab hier ein kleines Problem, was ein immer größeres Ausmaß annimmt.

Folgendes. Ich implementierte den JasperViewer in mein Projekt. Der Japserviewer erbt von dem Swing JFrame und kann somit als JFrame verwendet werden.

Ich habe bei der Default Close Operation alles ausprobiert. Jedes mal, wenn ich den Viewer schließe, schließt und beendet mein ganzes Programm. Ich habe das ganze schon mit einem normallen JFrame (TestFrame) getestet, da funktioniert alles.

Java:
 this.view = new JasperViewer(jasperPrint);
this.view.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Kann ich das schließen des Programms anders abfangen?
Oder gibt es weitere Ideen?


Java_Cracka^^
 
Was passiert bei Do_NOTHING_ON_CLOSE ?

Wahrscheilich ist da irgendwo noch ein eigener WinodwListener gesetzt.

edit: entfernen kannst du diese so:
Java:
WindowListener[] l= view.getWindowListeners();
	for (WindowListener w:l){
		view.removeWindowListener(w);
		System.out.println("remove");
	}

wobei ob das gescheit ist ist natürlich fraglich
 
Zuletzt bearbeitet:
Hallo,

Was passiert bei Do_NOTHING_ON_CLOSE ?
Das Programm schließt 🙂 (komplett)

Wahrscheilich ist da irgendwo noch ein eigener WinodwListener gesetzt.

Genau das war es.
Also von mir wurde da natürlich keiner reingesetzt, muss also schon irgendwie drin gewesen sein.

Hatte schon gedacht, bevor ich hier gepostet habe, dass es vielleicht ein WindowListener ist. Aber dachte nur das es das für das awt frame gebe. Naja nun bin ich besser informiert.

Also einmal Danke dafür. Somit läuft mein Programm zumindest.

Und wo wir schonmal beim Thema sind, gibts da nicht etwas sauberes? Bzw um auf meine Frage von oben zurückzugreiffen, kann man sowas nich abfangen mit try-catch oder ähnlichem?

Grüße
 
Nunja ich vermute mal der WindowListener wird da nicht um sonst hinzugefügt worden sein. Ich weiß nicht ob es so schlau ist diesen einfach zu entfernen.

Vl hast du irgendwo eine Möglichkeit zu informieren was der WindowListener sonst noch so macht. Ich nehme an, dass er noch weitere Aufgaben hat.
 
Moin,

jetzt hab ich es. Es gibt noch ein Konstruktor des JapserViewer, der noch ein Boolean wert erwartet.

JasperViewer(JasperPrint jasperPrint, boolean isExitOnClose)
Creates new form JasperViewer


Java:
this.view = new JasperViewer(jasperPrint);
this.view.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
Moin,

jetzt hab ich es. Es gibt noch ein Konstruktor des JapserViewer, der noch ein Boolean wert erwartet.

JasperViewer(JasperPrint jasperPrint, boolean isExitOnClose)
Creates new form JasperViewer


Somit habe ich das jetzt so umgesetzt

Java:
this.view = new JasperViewer(jasperPrint, false);
this.view.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Jetzt brauch ich keine Windowlistener mehr entfernen oder ähnliches. 😀
Danke nochmal!


Edit: Wobei ich im mom noch nicht weiß, ob ich die zweite Zeile überhaupt noch brauche, aufjedenfall funktioniert es jetzt 🙂
 

Zurück
Oben