Verstehen sich Swing und AWT nicht?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, ich komm gleich zur Sache

Hier ein kleines Codeschnipsel aus meinem Spiel:
Code:
highscores = new Highscores();
if(highscores.isHighscore(blaue+rote*5) && !multiplayer)
   highscores.newHighscore("User", blaue+rote*5);

Eigentlich möchte ich, dass der User seinen Namen eingeben muss:
Code:
highscores = new Highscores();
if(highscores.isHighscore(blaue+rote*5) && !multiplayer)
   highscores.newHighscore(JOptionPane.showInputDialog(null, "Namen: "), blaue+rote*5);

^^Nur irgendwie will das nicht gehen. Ich hab' diese Codezeilen in der Methode public void paint(Graphics g), dich ich fürs zeichnen mit dem AWT brauche. Wenn ich die Version mit der Nameneingabe mache, öffnet sich der InputDialog unendlich mal und es kommt zu unerklärlichen ArrayIndexOutOfBoundException Fehlern.

Hat einer eine Erklärung dafür?

Danke im Voraus🙂

www.nfreaks.de
 
Der grösste Fehler: die Paint-Methode zeichnet etwas (z.B. ein Frame). Wenn nun ein Dialog geöffnet wird, muss vielleicht das Frame neu gezeichnet werden...

paint -> Dialog öffnen -> paint -> Dialog öffnen -> paint ...

Also: in der Methode "paint" gehört ausschliesslich Zeugs, das benötigt wird, um zu zeichnen. Das Öffnen eines Dialogs garantiert nicht! Den musst du anderswohin pflanzen.


Zur ArrayOutOfBoundsException meint die FAQ:

FAQ hat gesagt.:
- IndexOutOfBoundsException
Dieser Fehler tritt häufig bei Arrays auf. Er zeigt an, dass man auf einen Index im Array gezeigt hat, der über den

Grenzen des Arrays liegt. Bsp.:
Code:
String[] array = new String[5]; // 5 elemente in Arrays, Indezies von 0-4
System.out.println(array[5]); // index 5 gibt es nicht

Also, dieses "highscores.isHighscore(blaue+rote*5)" ruft wahrscheinlich einen nicht existierenden Index ab.

P.S. und zu dem Titel deines Topics, ja, Swing und AWT haben sich nicht so gerne: siehe FAQ
 
Wenn ich statt dem Dialog, dass mir einen String zurück gibt gleich einen String zuweise, dann funktioniert alles ganz normal und es gibt keinen Array Fehler. Hmm, hat einer eine Idee (und dazugehörigen Code) wie ich das leicht umgehen könnte ohne das ganze Programm ändern zu müssen?
 
Gibt es keine andere Lösung, wie ich den Fehler beseitigen kann, ohne das ganze Programm umschreiben zu müssen? :roll:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben