JOptionPane ruft sich selbst immer wieder neu auf

Jaxor84

Mitglied
Hallo ihr Lieben,
Ich habe folgenden Code:
Java:
if (buff.toString().contentEquals("")) {
        sName = JOptionPane.showInputDialog(null, "Hallo! Bitte geben sie Ihren Namen an!", "Willkommen", JOptionPane.PLAIN_MESSAGE);
        writeUserName(sName);
Der funktionierte auch wunderbar und machte genau, was er sollte. Nur jetzt plötzlich (ohne einen mir erklärlichen Grund) ruft sich das OptionPane jedes Mal, wenn ich "Ok", "Abbrechen", oder das Kreuz klicke wieder selbst auf, sprich geht zu und wieder auf.
Ich bin mit meinem Latein echt am Ende: Im Code sehe ich keinen Anlass dafür, es wird kein Fehler ausgegeben und auch sonst habe ich keine Ahnung, nicht mal ansatzweise, wie das hier passieren kann.
Vielen Dank für eure Zeit und Hilfe!
LG
Max
 
Von selbst ruft sich das JOptionPane garantiert nicht neu auf.
Du musst es also in deinem Code erneut erzeugen.
Da du uns nur den kleinen Codeausschnitt gezeigt hast, können wir nicht wissen, wie es dazu kommt.
 
Hallöchen, entschuldigt die späte Antwort...
Von selbst ruft sich das JOptionPane garantiert nicht neu auf.
Du musst es also in deinem Code erneut erzeugen.
Da du uns nur den kleinen Codeausschnitt gezeigt hast, können wir nicht wissen, wie es dazu kommt.
Ich gebe zu, ich wüsste auch nicht, wie sich ein JOptionPane selbst aufrufen könnte - aber was weiß ich schon.
Ich bin mein Programm Zeile für Zeile mit dem Debugger durchgegangen und auch da tritt das Problem auf - ohne dass ich sehe dass andere Anweisungen ausgeführt werden oder irgendeine Schleife ausgeführt wird. Wenn das JOptionPane in meinem Code immer wieder erzeugt würde müsste ich das doch im Debugger gesehen haben, oder?
Anyway, hier ist noch etwas mehr Code:
Das ist die Methode, in der das JOptionPane erzeugt wird:
[CODE lang="java" highlight="24-26"]public static String readUserName () {
int c = 0;
String sName = new String();
File name = new File ("data/preferences/name.txt");
if (!name.canRead() || !name.isFile()) {
JOptionPane.showMessageDialog(null, "Eine systemrelevante Datei wurde gelöscht oder beschädigt. Der Benutzername wurde zurückgesetzt.", "FEHLER", JOptionPane.WARNING_MESSAGE);
sName = JOptionPane.showInputDialog(null, "Hallo! Bitte geben sie Ihren Namen an!", "Willkommen", JOptionPane.PLAIN_MESSAGE);
writeUserName(sName);
return(sName);
} // end of if
else {
FileReader fr = null;
StringBuffer buff = new StringBuffer();
try {
fr = new FileReader(name);
while ((c = fr.read()) != -1) {
buff.append((char) c);
} // end of while
fr.close();
}
catch(IOException e) {
e.printStackTrace();
} // end of try
if (buff.toString().contentEquals("")) {
sName = JOptionPane.showInputDialog(null, "Hallo! Bitte geben sie Ihren Namen an!", "Willkommen", JOptionPane.PLAIN_MESSAGE);
writeUserName(sName);
} else {
sName = buff.toString();
} // end of if-else
return(sName);
}
}[/CODE]

Und das Problem tritt immer dann auf, wenn diese Methode aufgerufen wird. Das passiert in den folgenden Fällen:
Java:
benutzerName = einstellungen.readUserName();
Java:
jTName.setText(readUserName());
Ich hoffe damit könnt ihr was anfangen...
Liebe Grüße
Max
 
Wo sind denn diese zwei Zeilen? Wo werden die Methoden mit den zwei Zeilen überall aufgerufen?

Man sieht z.B. den Aufruf writeUsername - macht der irgendwas, das readUserName aufrufen könnte?
 

Zurück
Oben