Swing JOptionPane + FileChooser .. Reihenfolge wichtig!?

diggaa1984

Top Contributor
Hallo,

bei meiner Studienarbeit ist mir etwas komisches aufgefallen .. jedesmal wenn ich ein Dokument exportiert habe (in eine Datei geschrieben habe, beendete sich der Prozess des Programms nicht korrekt und blieb aktiv, das Programm selbst war nicht mehr sichtbar).

Es gab nur eine Stelle welche da in Frage kam, denn wenn ich die selbe Funktionalität ohne GUI getestet habe, ging es problemlos. Alles wurde korrekt beendet.

Folgender Code zeigt, wie es momentan umgesetzt ist, und einwandfrei funktioniert. Das Problem ist also schon behoben, aber mir ist nicht klar warum es dazu kam.

Java:
public void exportFile() {
		JFileChooser fc = new JFileChooser(lastUsedPath);
		int retVal = fc.showSaveDialog(null);
		if (retVal == JFileChooser.APPROVE_OPTION) {
			String tool = (String) JOptionPane.showInputDialog(null,
					   										   "Choose tool ..",
					   										   "Export formula",
					   										   JOptionPane.PLAIN_MESSAGE,
					   										   null,
					   										   BackendFacade.getInstance().getActiveGrammar().getToolsForMapping().toArray(),
					   										   null);

			if (tool == null) {
				return;
			} else {
				try {
					File tempFile = File.createTempFile("tempFormula", "temp", null);
					BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile));

					bw.write(editor.getSelectedFileView().getText());
					bw.close();
					FormulaFileWriter.exportToFile(BackendFacade.getInstance().getActiveGrammar(), tool, tempFile, fc.getSelectedFile().getAbsoluteFile());
					tempFile.delete();
				} catch (Exception e) {
					SimpleLog.print("ERROR - EditorController: " + e.getLocalizedMessage() + "\n" + e.getMessage());
				}//try
			}//if
		}//if
	}//exportFile

Der Aufruf in Zeile 23 diente ebenfalls als Testaufruf ohne GUI .. das ging ohne Probleme, das heisst etwas davor oder danach musste mir diesen "Zombieprozess" erzeugen. Nach reichlich probieren vertauschte ich die Reihenfolge vom FileChooser und des JOptionPane und es ging.

fehlerhafte Version also:
JOptionPane wurde zuerst aufgerufen um ein Tool auszuwählen, nach Bestätigung wurde der FileChooser geöffnet um die Zieldatei für den Export zu wählen. Die Datei wurde erfolgreich geschrieben, alle Fenster verschwanden wie erwartet. Beendete ich nun das gesamte Programm bliebt der Prozess offen.

So wieder Code da oben steht geht es nun, die Frage die ich mir Stelle:
Warum sollte die Reihenfolge der 2 Dialoge einen Einfluss darauf haben ob ein Zombi übrig bleibt oder nicht? Hat jemand schonmal sowas erlebt?
 

diggaa1984

Top Contributor
nein keine extra threads .. der EDT ist das einzige was da rumrudert .. und durch Änderung der Reihenfolge in nur dieser Methode lies sich das Problem lösen. Es ist also weder Funktionalität verschwunden noch hinzugekommen ???:L
 

diggaa1984

Top Contributor
hm nu komm ich gleich noch auf ein viel blöderes Beispiel :)

Java:
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.awt.event.*;

public class KSKB {
	
	private static JFrame frame;
	private static JButton button;
	
	private static String lastUsedPath;
	private static List<String> tools;
	
	public static void main(String[] args) {
		lastUsedPath = ".";
		tools = new ArrayList<String>();
		tools.add("none");
		tools.add("test");
		
		try {
			SwingUtilities.invokeLater(new Runnable() {
				
				@Override
				public void run() {
					try {
						UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
					} catch (Exception e) {
						e.printStackTrace();
					}//try
					
					frame = new JFrame("KSKB");
					frame.setLocationRelativeTo(null);
					
					button = new JButton("export");
					button.addActionListener(new ActionListener() {
						@Override
						public void actionPerformed(ActionEvent e) {
							System.out.println("foo");;
						}
					});
					
					frame.add(button);
					frame.pack();
					frame.setVisible(true);
				}//run
			});
		} catch (Exception e) {
			e.printStackTrace();
		}//try
	}
}

das lässt mich grad irgendwie an meinem Verständnis zweifeln, denn bei mir bleibt auch so ein Prozess offen, wenn ich das Fenster schliesse.

Warum :autsch:
 
G

Gast2

Gast
Du musst den JFrame noch sagen was es machen soll wenn es geschlossen wird.
Code:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dann wird dein Programm beendet sobald du das Fenster zu machst.
 
G

Gast2

Gast
Du beendest den Prozess auch nirgends ist klar, dass er offen bleibt... Da fehlt setDefaultCloseOperation()!!!
 

diggaa1984

Top Contributor
hm ok, also mit dem EXIT_ON_CLOSE und dem eigentlichen Test mit dem JFileChooser und JOptionPane kann ich es grad nicht nachstellen, aber das EXIT_ON_CLOSE ist nicht der Fehler in meinem Editor, sonst würde es ja nun immer noch nicht gehen ^^ ... vielleicht schaff ichs ja nochmal den fehlerhaften Code zu erzeugen, aber momentan kann ich kein KSKB dazu baun :(

edit: im SVN hatte ich diese version auch net abgelegt .. schade eigentlich
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
J JOptionPane return bei "Abbrechen" AWT, Swing, JavaFX & SWT 13
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
O Timer in JOptionPane anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
O JOptionPane mit JFileDialog AWT, Swing, JavaFX & SWT 5
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
N Swing Mocken von JOptionPane im JUnit-Test AWT, Swing, JavaFX & SWT 3
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JOptionPane AWT, Swing, JavaFX & SWT 1
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
snipesss Hintergrundbild in JOptionPane.showInputDialog? AWT, Swing, JavaFX & SWT 4
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
A Swing JOptionPane.showConfirmDialog, EventQueue wird weiter abgearbeitet AWT, Swing, JavaFX & SWT 2
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
OnDemand JOptionPane AWT, Swing, JavaFX & SWT 2
B JFrame wie JOptionPane.showMessageDialog() AWT, Swing, JavaFX & SWT 2
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
L Swing JOptionPane Verwirrung AWT, Swing, JavaFX & SWT 13
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
I javascript in javaprogramm JOptionpane -> haengt (embedded Interpreter) AWT, Swing, JavaFX & SWT 2
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
D JOptionPane.QUESTION_MESSAGE Fett darstellen AWT, Swing, JavaFX & SWT 4
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
M Swing Änderungen eines TextFelds und JOptionPane AWT, Swing, JavaFX & SWT 5
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
E Swing setCaretPosition für ein JTextField in einem JOptionPane AWT, Swing, JavaFX & SWT 3
H Swing JOptionPane.showConfirmMessage() wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
R Eingegebenen Text in JOptionPane in andere Klasse weitergeben AWT, Swing, JavaFX & SWT 2
M JOptionPane.showInputDialog abbrechen abfangen? AWT, Swing, JavaFX & SWT 2
Weiti JOptionPane aus einer von JPanel abgeleiteten Klasse aufrufen AWT, Swing, JavaFX & SWT 3
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
G Swing Meldung mit joptionpane information message AWT, Swing, JavaFX & SWT 22
B Swing JOptionPane ohne beep AWT, Swing, JavaFX & SWT 6
A Swing \t im JOptionPane AWT, Swing, JavaFX & SWT 2
G JOptionPane.showConfirmDialog size problem AWT, Swing, JavaFX & SWT 3
S JOptionPane - InitialValue AWT, Swing, JavaFX & SWT 9
S JOptionPane resultat kriegen AWT, Swing, JavaFX & SWT 7
ABstraCT JOptionPane setSize ? AWT, Swing, JavaFX & SWT 6
S JOptionPane.showInputDialog JList erzwingen? AWT, Swing, JavaFX & SWT 4
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
G JOptionPane.showInputDialog(): Texteingabe und Fokus AWT, Swing, JavaFX & SWT 3
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
F JOptionPane.showMessageDialog AWT, Swing, JavaFX & SWT 2
M JOptionPane.showMessageDialog() mit printStackTace() ? AWT, Swing, JavaFX & SWT 7
QDog JTabbedPane JOptionPane AWT, Swing, JavaFX & SWT 2
K Tabelle nach JOptionPane updaten AWT, Swing, JavaFX & SWT 5
A JOptionPane; CLOSED_OPTION ausschalten AWT, Swing, JavaFX & SWT 5
A Probleme mit einer JOptionPane in einem jar-File AWT, Swing, JavaFX & SWT 14
Z JOptionPane mit einer Methode in dem Vordergrund setzen? AWT, Swing, JavaFX & SWT 6
J JOptionPane Tabs AWT, Swing, JavaFX & SWT 3
G JOptionPane mit andere Farbe AWT, Swing, JavaFX & SWT 8
B Ein JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 6
G komplexes JOptionPane (oder doch JFrame?) AWT, Swing, JavaFX & SWT 2
G JOptionPane mit link zum anklicken AWT, Swing, JavaFX & SWT 4
G JOptionPane AWT, Swing, JavaFX & SWT 6
N Probleme mit eigenem JOptionPane AWT, Swing, JavaFX & SWT 2
A Schließen eines JOptionPane.showConfirmDialog AWT, Swing, JavaFX & SWT 6
B JOptionPane.showInputDialog mit drei ComboBoxen nebeneinande AWT, Swing, JavaFX & SWT 2
S JTextField und JOptionPane - Zeicheneingabe beschränken AWT, Swing, JavaFX & SWT 3
G JOptionPane AWT, Swing, JavaFX & SWT 3
eskimo328 JOptionPane ohne CANCEL Button AWT, Swing, JavaFX & SWT 2
M JOptionPane.showConfirmDialog. Frage zur Cancel_Option AWT, Swing, JavaFX & SWT 2
L JOptionPane AWT, Swing, JavaFX & SWT 4
P JComboBox.addItem erzeugt Layoutproblem mit JOptionPane AWT, Swing, JavaFX & SWT 2
J eigenes JOptionPane ? AWT, Swing, JavaFX & SWT 2
J JOptionPane Buttons AWT, Swing, JavaFX & SWT 4
G Eingabe auslesen mit JOptionPane AWT, Swing, JavaFX & SWT 2
vogella JOptionPane in den Vordergrund bringen AWT, Swing, JavaFX & SWT 2
padde479 JOptionPane AWT, Swing, JavaFX & SWT 3
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
S JOptionPane: methode ShowConfirmDialog ist undefiniert AWT, Swing, JavaFX & SWT 2
S JOptionPane und eine feste Zeilenbreite. AWT, Swing, JavaFX & SWT 4
S JProgressBar zu JOptionPane hinzufügen. AWT, Swing, JavaFX & SWT 8
G JOptionPane AWT, Swing, JavaFX & SWT 3
B Eingabeüberprüfung beim JOptionPane.showInputDialog() AWT, Swing, JavaFX & SWT 3
D Mit JOptionPane einen Link darstellen AWT, Swing, JavaFX & SWT 10
S JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 23
S Ein frage zu JOptionPane AWT, Swing, JavaFX & SWT 2
H wie frage ich mehrere buttons von joptionpane ab AWT, Swing, JavaFX & SWT 4
G Link in JoptionPane? AWT, Swing, JavaFX & SWT 3
N JOptionPane mit Html Tags AWT, Swing, JavaFX & SWT 5
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
M Ausgabe mit JOptionPane AWT, Swing, JavaFX & SWT 6
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
S JOptionPane in den Bildschirmvordergrund bringen AWT, Swing, JavaFX & SWT 3
F JOptionPane soll nicht auf ENTER reagieren AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben