LordK Geschrieben 25. November 2002 Geschrieben 25. November 2002 Hi Leute, ich hab das Problem aus diesem Thread hier jetzt mehr oder weniger gelöst, in dem ich es einfach umprogrammiert habe und die Editier funktion mit ins selbe Fenster wie den Rest gemacht hab. Jetzt hab ich aber ein neues Problem. Ich kann das Array jetzt um beliebig viele Kunden erweitern, und diese Sogar in der Editier Funktion laden, wenn ich jetzt einen Kunden geladen habe, ein oder zwei Daten ändere und auf Speichern drücke, speichert er den Kunden einwandfrei. Wenn ich danach nochmal einen Kunden editieren will, die Kundennummer eintrage und auf Laden drücke, passiert nichts, ausser das er in der Konsole diese Fehlermeldung ausgibt: Exception occurred during event dispatching: java.lang.NumberFormatException: at java.lang.Integer.parseInt(Integer.java:426) at java.lang.Integer.parseInt(Integer.java:454) at FirmaGUI.KundeLaden(FirmaGUI.java:209) at FirmaGUI$AktionsAbhoerer.actionPerformed(FirmaGUI.java:430) at java.awt.Button.processActionEvent(Button.java:329) at java.awt.Button.processEvent(Button.java:302) at java.awt.Component.dispatchEventImpl(Component.java:2595) at java.awt.Component.dispatchEvent(Component.java:2499) at java.awt.EventQueue.dispatchEvent(EventQueue.java:319) at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:10 3) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:84) ich verstehs net, denn wenn ich die Aktion das erste mal ausführe funktioniert sie einwandfrei. Beim zweiten mal dann nicht mehr. Das Laden und Speichern von Kunden sie so aus: public void KundeLaden() { lkunde = Integer.parseInt(kndnr.getText()); if(lkunde > kundenliste.length-1 || lkunde<1) { editVorname.setText(kundenliste[0].vorname); editName.setText(kundenliste[0].name); editStrasse.setText(kundenliste[0].strasse); editPlz.setText(kundenliste[0].plz); editWohnort.setText(kundenliste[0].wohnort); editTelefon.setText(kundenliste[0].telefon); editEmail.setText(kundenliste[0].email); } else { editVorname.setText(kundenliste[lkunde].vorname); editName.setText(kundenliste[lkunde].name); editStrasse.setText(kundenliste[lkunde].strasse); editPlz.setText(kundenliste[lkunde].plz); editWohnort.setText(kundenliste[lkunde].wohnort); editTelefon.setText(kundenliste[lkunde].telefon); editEmail.setText(kundenliste[lkunde].email); } } public void KundeSpeichern() { String merkename = editName.getText(); editName.setText(""); //Text im Namensfeld löschen String merkevorname = editVorname.getText(); editVorname.setText(""); String merkestrasse = editStrasse.getText(); editStrasse.setText(""); String merkeplz = editPlz.getText(); editPlz.setText(""); String merkewohnort = editWohnort.getText(); editWohnort.setText(""); String merketelefon = editTelefon.getText(); editTelefon.setText(""); String merkeemail = editEmail.getText(); editEmail.setText(""); kndnr.setText(""); kundenliste[lkunde].name = merkename; kundenliste[lkunde].vorname = merkevorname; kundenliste[lkunde].strasse = merkestrasse; kundenliste[lkunde].plz = merkeplz; kundenliste[lkunde].wohnort = merkewohnort; kundenliste[lkunde].telefon = merketelefon; kundenliste[lkunde].email = merkeemail; textbereichKunden.setText(""); anzeigenKundenliste(); kundenfenster.setSize(420,600); lkunde = 0; } Vielleich noch eine Kurze erklärung hierzu. kundenfenster.setSize(420,600); Die Elemente zum Editieren existieren vorher schon im Frame, bei Drücken auf den Button editieren, wird der Frame einfach so groß gemacht, dass die Editierelemente zum vorschein kommen. Ich hoffe jemand kann mir erklären woran das liegt, bin schon wieder am verzweifeln. danke & c ya LordK Zitieren
Florian_K Geschrieben 25. November 2002 Geschrieben 25. November 2002 Hallöchen, LordK! Es scheint so, als ob beim Parsen der Interger-Zahl keine Zahl aus dem String extrahiert werden kann, aus welchem Grund auch immer - entweder ist der String leer oder enthält nur Buchstaben. Mit dem Problem musst du dich beschäftigen. Einen Weg die Exception abzufangen, besser gesagt zu verarbeiten, gibt es mit try-catch-Blöcken. Du scheinst ja schon einen alternativen Weg für die Bearbeitung geschrieben zu haben, nur wird der nie erreicht, weil schon vorher die NumberFormatException vom parseInt geworfen wird, die nicht bearbeitet wird. In Code würde sich das try-catch dann etwa so antun: lkunde = 0; try { lkunde = Integer.parseInt(kndnr.getText()); // hier vielleicht noch die Bearbeitung, wenn der Intger-Wert // geparst wurde... } catch (NumberFormatException nfe) { System.out.println("Kleiner Fehler: "+nfe); // hier die Debugging-Ausgaben und vielleicht der // alternative Weg der Verarbeitung // --- // Anstatt der NumberFormatException kannst du auch eine // generelle Exception abfangen, damit wird dann alles // abgegriffen } Ich hoffe, ich habe alle Klarheiten beseitigt! Ciao, Florian Zitieren
LordK Geschrieben 25. November 2002 Autor Geschrieben 25. November 2002 OK Danke für den Tip Ich hab das jetzt mal ausprobiert. Offentsichtlich, ließt er beim zweiten mal ein Leerstring aus, ich weiß nur net warum, eigentlich steht ne Zahl im Feld die er Parsen sollte. Ich hatte beim Speichervorgang ja noch diese Zeile drin kndnr.setText(""); aber an der hats nicht gelegen, die hab ich raus geworfen und der selbe Fehler tritt immer noch auf. Ich versteh nur net, warum erst beim zweiten mal. Zitieren
LordK Geschrieben 26. November 2002 Autor Geschrieben 26. November 2002 OK hat sich erledigt, ich hab den Fehler gefunden. Es lag dran, dass die ganzen Textfelder zweimal erzeugt wurden, da sie bei jeden Knopfdruck auf Editieren neu erzeugt wurden. Es ist schon grausam wie banal manche Fehler sind und man sie einfach nicht findet :bimei Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.