Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen, ich bin schon länger mit diesem Problem beschäftig und komme einfach nicht weiter . Ich hoffe ihr könnte mir da helfen. Danke im voraus.
Ich habe ein Programm erstellt, in der die Kosten berechnet werden müssen. Der User gibt Stückzahl, Stückkosten sowie Rabatt ein und rück auf "Berechnen". Der Text in JLabel wird dann ebenfalls automatisch ne erstellt. Alles klappt super. So nun zum Problem: ich beschäftige mich grad mit try-catch-Thema um Exceptions abzufangen! Dabei möchte ich (bzw. so ist die Aufgabe), dass im JLabel folgendes als Text ausgegeben wir, wenn der user statt einer ganzen Zeil (Integer), was anderes eingibt, z. B. 3.2, oder a1: "Fehler bei der Eingabe". Der von mir erstellte try-catch code soll in einer Methode aufgerufen werden. Der Code sieht so aus wie im Anfang. Meine Gedanken sind die folgenden: gleich am Anfang wo steht static JLabel lblErgebnis (lblErgebnis ist der Name des Labels) wird nicht DER Leben von Compaler verstanden, allerdings tfRabatt etc. funktioniert einwandfrei . Wenn ich mit dem Cursor ja auf den Namen des JLabels lblErgebnis klicke, dann wird ja dieser Objekt überall wo er vorkommt im Code markiert. Genau dies passiert ja nicht in der try-Catch-Methode! d. h. Der JLabel den ich in der Methode anspreche ist nicht der gleiche . Wie kann das ändern?
Warum sollte das lblErgebnis nicht das gleiche sein??
Wenn ich du wäre würde ich einen CaretListener auf das Textfeld setzen und mit Regex prüfen ob nur zahlen vorkommen.....wenn ein Buchstabe oder Zeichen ( kein nummerischer Wert ) vokommt dann zeige die Meldung
sonst fahre fort..
>> EDIT: oder du prüfst einfach vor jedem Button Klick das Feld. ( Regex )
Danke schon mal für die schnelle Antwort.
ganz kurz zur Anmerkung, ich bin der absolute Anfänger was Java angeht und lerne aus dem Buch heraus.
static habe ich entfernt - ok, die Ableitung von JFrame wurde nicht von mir, sondern von WindowBuilder automatsich erstellt, und um da etwas zu ändern bzw anzupassen fehlen mir die Kenntnisse (noch).
Aber: das lblErgenis ist eindeutig nicht der gleiche! im Code, z. B. unter Listener wirde er braun markiert.
Und in der Methode selbst ist er blau und wird nicht markiert wenn der Cursor im Listener steht. hier:
Mit this. geht das leider auch nicht. Folgendes: wenn ich this. schreibe, dann gibt es ja autovervollständigung, darunter kann ich von mir erstellt Textfelder, z. b. tfRabatt auswählen, aber keine JLabels ich poste ma den ganzen Code. (Sry auf jeden Fall für großen Spam).
ok, das klappt, vielen Dank
Aber so eine Frage, die Zeile JLabel lblErgebnis = new JLabel(""); erzeugt der WindowBuilder beim erstellen des neuen Labels im Designmodus ja automatisch. WindowBuilder, könnte man meinen, möchte indem er für uns den Quelcode erstellt uns das Leben einfacher machen. Welcher Zweck wird dabei verfolgt wenn er vor dem lblErgebnis diese JLabel hinzufügt???
Ganz einfach: ein Label ist nunmal ein Label und dieses ist in der Regel ein unveränderlicher Text. Man ändert den Text eines Label nur in sehr seltenen Fällen. Texte die sich ändern stehen in Textfields oder TextAreas. Als User erwarte ich nicht das sich der Text eines Labels ändert und deshalb würde ich das als Programmierer auch nicht machen wen ich nicht einen seh4 triftigen Grund dafür habe
Aber so eine Frage, die Zeile JLabel lblErgebnis = new JLabel(""); erzeugt der WindowBuilder beim erstellen des neuen Labels im Designmodus ja automatisch.
Und wenn du dich dafür entscheidest, ein Member "lblErgebnis" in deiner Klasse zu deklarieren, musst du natürlich auch darauf achten, den generierten Code entsprechend anzupassen.
Und deshalb stimme ich auch Thallius zu: