Ich stehe gerade aufm Schlauch, ich habe ein mittlerweile recht umfangreiches Progamm geschrieben mit einem komplexen GUI.
Dazu habe ich von begin an nen "Errorlogger" geschrieben, der diverse Debugging informationen in verschiedene Dateien schreibt.
Ich erzeuge das GUI wie gewohnt via
Code:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui = new MainFrame(LOG, VERSION);
gui.setVisible(true);
}
});
das LOG-Objekt ist dabei mein Errorlogger.
Das problem dabei ist nun, dass ich den Errorlogger über LOG.exit() terminieren muss da die vom Logger erzeugten Dateien sonst alle leer sind (mir ist gerade nicht ganz klar wieso).
Die komplette Main sieht dabei so aus:
Code:
public static void main(String[] args) {
LOG = new Logger();
LOG.log("TracklogTools v" + VERSION + " werden initialisiert...");
if(args.length > 0) {
LOG.log(PREFIX + "Modus: NoGUI");
String s = "";
for(int i = 0; i <= args.length; i++) {
s = s + i + args[i] + ", ";
}
LOG.log("Parameter: " + s);
new NoGUI(LOG, args);
}else {
LOG.log(PREFIX + "Modus: GUI");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui = new MainFrame(LOG, VERSION);
gui.setVisible(true);
LOG.exit();
}
});
}
LOG.exit();
}
Für mein Problem relevant ist nur der else Fall.
Mir ist klar, dass das GUI als neuer Thread erzeugt wird, die Frage ist, wie ich die main-Methode dazu bringen kann auf das beenden des GUIs zu warten.
Hatte es schon mit nem while(gui.isVisible()) { //tue nichts } probiert, aber das ist nicht wirklich sinnvoll...
Jemand ne Idee?
PS:
Das LOG.exit() in die close(), bzw exit() Methode meines GUIs zu packen ist auch nicht sinnvoll, da die erzeugten Dateien im Falle eines unerwarteten Fehlers/Absturzes dann ebenfalls leer sind
.
EDIT:
hmmm ok ich bin ein idiot. hat sich erledigt!