Falls ---.getText == leer Problem!

MartinV96

Mitglied
Hey Leute, habe ein kleines problem mit JFrame
Ich will prüfen ob der Input leer ist, und dann eine Fehlermeldung ausgeben
Ich habe mit Google schon mehrere Minuten verbracht, aber habe nie die Lösung für mein Problem gefunden. Ich hoffe ihr könnt mir helfen.
Code:
Java:
else if (jTextField1.getText() == null) {
            JOptionPane.showMessageDialog(this, "Bitte eine Zahl angeben!");
        }

Es lässt sich auch ausführen aber wenn ich einen leeren Input übergebe kommt diese Fehlermeldung

run:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at ertosthenes.NewJFrame.jButton1ActionPerformed(NewJFrame.java:153)
at ertosthenes.NewJFrame.access$300(NewJFrame.java:13)
at ertosthenes.NewJFrame$4.actionPerformed(NewJFrame.java:72)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
 
[c]getText()[/c] wird wohl nicht [c]null[/c] sondern [c]""[/c] liefern.
Insofern kannst du, wenn du dir sicher bist, dass diese nie [c]null[/c] zurück liefert, [c]text.isEmpty()[/c] oder [c]text.equals("")[/c] verwenden. Falls der Text null sein kann, auch [c]text == null || text.isEmpty()[/c]. Natürlich auch beliebig erweiterbar mit [c].trim().isEmpty()[/c] o.ä. Ansonsten sind die StringUtils der Apache Commons (Paket Lang) hier hilfreich. Da kannst du dann je nach dem ob später noch non-null benötigt [c]text = StringUtils.trimToEmpty(text)[/c] oder [c]StringUtils.isEmpty(text)[/c] bzw. [c]StringUtils.isBlank()[/c] verwenden.
 
Nunja, du solltest dann auch irgend eine Schleife drum machen, z.B. könnte man so was machen:
Java:
String input;
do {
    input = getSomeInputFromUser();
while (!StringUtils.isNumeric(input));
int number = Integer.parseInt(input);
 
ich finde es persönlich falsch einen anfänger gleich mit Apache Commons zu konfrontieren (zu mal auch diese lib-sammlung lange kein all-heil-mittel ist und viel overhead sowie deprecated stuff mit sich bringt NUR um ein oder zwei methoden daraus zu nutze) ...


@TO

versuch es so

Java:
if(JTextField.getText().equals(""))
{
System.out.println("JTextField ist leer");
}
 
Java:
else if (jTextField1.getText() == null || jTextField1.getText().trim().isEmpty()) {
            JOptionPane.showMessageDialog(this, "Bitte eine Zahl angeben!");
        }
 
Zuletzt bearbeitet:
Also für mich sieht es so aus, als würde die String-Überprüfung zu spät statt finden. Laut StackTrace wird die Exception ja bei
Code:
Integer.parseInt(...)
geworfen und nicht bei
Code:
showMessageDialog
. Du musst sicherstellen, das der parseInt Methode in Zeile 153 in deiner Klasse NewJFrame kein leerer String übergeben wird.

Gruß
 
Java:
if (jTextField1.getText() == null || jTextField1.getText().isEmpty() || jTextField1.getText().trim().isEmpty()) {
  JOptionPane.showMessageDialog(this, "Bitte eine Zahl angeben!");
}

Wenn ich leer bin, dann beginnt die Action 😀 🙂
 
und um es ganz kompliziert zu machen und eine NFE zu vermeiden könnte man noch ein customDocument basteln was sicherstellt das man nur zahlen eingeben kann ...
 

Zurück
Oben