ich habe ein kleines Problem und hoffe, dass ihr mir auf die Sprünge helfen könnt.
Ich arbeite an einem kleinen Programm, welches via Gui logische Abläufe zeigen soll. Das ist auf mehrere Frames aufgeteilt. Zu Anfang wird ein Frame dargestellt, in dem man auswählen kann, zu welchen anderem Frame man springen möchte.
Und schon da, wenn man nur das erste Frame hat, tritt dieses Verhalten schon auf.
Solange ich in Netbeans bin funktioniert alles wunderbar. Die Fenster lassen sich schliessen, wie gewollt.
Dann erstelle ich eine .jar.
Starte ich diese Jar mit dem JDK 1.7.0_21 via MS-Dos Eingabeaufforderung, läuft alles wie erwartet.
Starte ich blos mit “java -jar”, dann wird die JRE 7 genommen, dann kann ich das (oder dann eben auch die) Fenster nicht schliessen. Das Ganze lässt sich dann nur über schliessen der MS-dos Aufforderung beenden.
Der Kunde hat sich bei mir gemeldet (dadurch weiss ich das überhaupt:( ) und mir dieses Verhalten beschrieben, und siehe da - das Selbe hier.
Wisst ihr eine Abhilfe? Ich nehme an, irgendwo liegt eihn Fehler meinerseits.
@tomate salat
Nicht schliessen heisst, dass wenn ich das rote Kreuz oben recht betätige keinerlei Reaktion erfolgt.
Es wird das Fenster, in dem ich das Kreuz klicke, nicht geschlossen.
Das Fenster wird erst dann geschlossen, wenn ich die MS-DOS Eingabe über schliessen beende.
Exceptions oder sonstige Fehlermeldungen sind nicht vorhanden.
Das Verhalten tritt auch bei EXIT_ON_CLOSE auf. Extra eben noch mal geschaut.
das Programm ist immer noch ziemlich lang,
tritt kein Fehler auf wenn du die JList herausnimmst, ist sie also Fehler-relevant?
anderenfalls hat sie nichts darin zu suchen,
hier noch kürzer mit einem WindowListener,
ist interessant ob der drankommt, was sagt der zur gesetzten CloseOperation?
könnte letztlich auch egal sein wenn System.exit() oder dispose() in den Listener hineinkommt
(sofern dieser funktioniert)
aber wenn DISPOSE_ON_CLOSE nicht geht, dann ist ja mit allem Möglichen zu rechnen, nichts darf vorausgesetzt werden
im zuvor geposteten Programm erbte auch noch StartGui von JFrame, was zumindest in der gekürzten Variante unnötig ist,
darauf ist noch zu achten, wird wirklich das JFrame angezeigt, welches du willst?
ist die CloseOperation beim richtigen JFrame gesetzt oder bei einem falschen?
wenn dabei Fehler passieren, kann man auch schnell den WindowListener falsch adden und kommt nicht voran,
im Testprogramm mit nur einem JFrame sollte aber alles eindeutig sein
class TestGui2
{
public static void main(String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
StartGui st = new StartGui();
st.programWindow.setVisible(true);
}
});
}
}
class StartGui
{
public StartGui()
{
programWindow = new javax.swing.JFrame();
programWindow.setResizable(false);
programWindow.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent _e)
{
System.out.println("want to close " + programWindow.getDefaultCloseOperation());
}
public void windowClosed(WindowEvent _e)
{
System.out.println("close");
}
});
programWindow.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
programWindow.setTitle("Start V1.0");
programWindow.setBounds(10, 10, 255, 300);
}
public javax.swing.JFrame programWindow;
}
Werde mir heute abend oder am WE die Problematik noch mal anschauen. Mal sehen auf was ich komme. Möglich auch, dass das Problem nur am Rechner in der Firma auftaucht.
Wie auch immer…
Erstmal danke. Waren nützliche Denkanstösse.
Torsten
gerade eben noch mal probiert. Unter Ubuntu keine Probleme.
Unter Windows keine Probleme. Der selbe Programmcode wurde verwendet (TestGui.java und StartGui.java).
Allerdings habe ich hier zu Hause eine neuere JRE 1.7.0_25.
Kann das damit zusammenhängen?
Also hier zu Hause läuft es, wie es soll. Dann eben Montag auf Arbeit weiter machen.
Wie jetzt, dein Java Programm läuft auf MS-DOS? Jedenfalls denke du willst einfach statt “java -jar” “javaw -jar” benutzen, dann wird kein Konsolenfenster geöffnet und das Programm schließt sich, wenn man aufs X klickt.
was heißt ‘keine Probleme’, beziehst du dich wieder allgemein auf dein ursprüngliches Programm?
hast du schon getestet wie es mit Listener überall aussieht?
@bertor nein, nicht ms-DOS. Aber von der Ms- DOS Eingabeaufforderung.
Und da hilft es nicht (auf dem Firmencomputer) javaw zu nehmen.
Das habe ich bereits probiert.
@SlaterB ja, der ursprüngliche Code wurde verwendet. Wie ich schrieb TestGui und StartGui.
Werde Montag in der Firma mal schauen, was sich machen lässt.
Hier, zu Hause, funktioniert es ja.
die freudige Nachricht zuerst. Es funktioniert nun.
Ich habe zu Hause auf meinem Computer 2 JARs erstellt. Einmal TestGui.jar mit dem Code von mir und dann die TestGui2.jar von SlaterB.
Beide funktionieren zu Hause wie erwartet, d.h. die Fenster lassen sich schliessen und bei TestGui2.jar kommt auch noch
want to close 2
close
Die Jar-Dateien mit in die Firma genommen und laufen lassen - selbe Problematik. Fenster lassen sich nicht schliessen und es kommt bei TestGui2 auch keine Ausgabe.
Dann habe ich versucht die JRE upzudaten (war noch 1.7.0_09) - Abbruch, ging nicht, keine Fehlermeldung.
Ok, denk ich, installierst du eben die 25 per Hand. Ging nicht - Fehler BrowserLaunch 1314.
Also die alte JRE per Hand deinstalliert und dann die 25 installiert.
Und siehe da, es funktioniert - Fenster lassen sich nun schliessen
Dem Kunden Update/Neuinstallation der JRE empfohlen. Und bei ihm funktioniert es auch.
Wichtig vielleicht noch, dass der Kunde und ich beide Windows XP SP3 haben.