JTextField

  • Themenstarter Themenstarter charly
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

charly

Gast
hallo Leute ich hoffe das ihr mir helfen könnt, wär wirklich sehr dankbar!!

Ich habe eine Eingabebox mit JTextField erstellt und meine Frage ist nun:

Wie kann ich sie so verwenden wie z.B den einfache JOptionPane.InputDialog das man das eingegebene in einen Datentyp speichern kann. Ich weiß nur das man mit getText() herauslesen kann was in dem Textfeld steht aber, das gilt schon bevor man etwas eingegeben hat.

Ich hoffe ihr versteht mein Problem und könnt mir mit einer Lösung helfen.

Danke schon im voraus!
 
In welchem Datentyp willst du deine Eingabe speichern?
Was willst du mit dem Text in dem TextField anfangen?
 
Ich möchte es einfach in einen String abspeichern und JTextField möcht ich dazu verwenden wie den normalen JOptionPaneInputDialog nur das ich ihn selbst erstellen kann ich hab auch schon 2 Buttons erstellt nämlich ok und ende, wenn man auf ok klickt dann soll die eingabe in ein String abgespeichert werden, damit ich später mit der Eingabe weiterarbeiten kann.
 
Code:
class Test extends .... implements ActionListener
{
private JTextField tf = new JTextField();
private JButton okButton;
private String eingabe = "";

[...]

public Test()
{
    okButton = new JButton("OK");
    okButton.addActionListener(this);
}

public void ActionPerformed(ActionEvent e)
{
    if(e.getSource()==okButton)
    {
         eingabe = tf.getText();
    }
}

[...]

}


Wenn du jetzt auf ok klickst, dann wird deine Eingabe in den String eingabe gespeichert. Wolltest du das wissen?
 
Leider zeigt er mir genau den selben fehler an......

Code:
private static String Eingabe(String txt)
    {
       EingabeBox a = new EingabeBox(txt);
       return a.setJTextField();
    }

    /********************************************************************************************
     ******************  Methode für das Umwandeln von String in Integer*************************
     *******************************************************************************************/
     
    private static int Integer(String txt)
    {
        return Integer.parseInt(txt);   [b]---> hier zeigt er mir den fehler an NumberFormatException
					     ich hab die Exception aber mit catch gefangen
                                                                                     und somit  wiederholt sich die
					     eingabe andauernd[/b]    }
    
    /********************************************************************************************
     ***************Methode für die Abfangen von Zeichenketten in einer Inputbox*****************
     *******************************************************************************************/
     
    private static int Abfang_String(String txt)
    {
        int spieleranzahl = 0;
        boolean ok;
        String spieleranzahl_String;
        
        do
        {
            ok = true;
            spieleranzahl_String = Eingabe(txt);
        
             try
             {
                 spieleranzahl = Integer(spieleranzahl_String);
             }
             catch(NumberFormatException e)
             {
                 ok = false;
             }
         }while(!ok);
         return spieleranzahl;
    }
 
kannst du mir helfen k-man. denn er zeigt zwar beim complieren keinen fehler an aber beim ausführen zeigt er mir diesen fehler an. ich denke das er er bevor die eingabe erfolgt den Text liest und "" findet und da ich ja mit der methode Integer.parseInt(String txt) nicht "" umwandeln kann macht er mir diesen fehler

ich weiß aber leider nicht wie ich das anstellen könnte so wie ich das will
bitte hilf mir danke!
 
Hab ich dich richtig verstanden? Du willst den String, den du vom TextField bekommst in einen Integer umwandeln?
Ich kenn jetzt zwar nicht deinen ganzen Code, aber wenn du nicht viel ändern willst, dann kannst du dein Problem mit einem kleinem Trick umgehen. Jedesmal, wenn die Methode aufgerufen wird, die deinen String in einen int umwandeln soll, dann prüf doch einfach vorher, ob der String gültig ist. Setzt in beim Initialisieren auf 'null' und prüf vorher immer, ob der String ungleich null ist.
Code:
String test = null;
[...]
if(test != null)
    int value = Integer.parseInt(test);
[...]
Somit würde er den String nur parsen, wenn er schon mal geändert wurde (zB durch dein getText())
Du könntest auch abfragen, ob die Eingabe einen Wert zwischen 2 und 5 hat (Wenn du zB Spieleranzahl eingeben lassen willst)
Code:
if(test != null && Integer.parseInt(test) >= 2 && Integer.parseInt(test) <= 5)
    int value = Integer.parseInt(test);
Hier kann der Fehler in der if-Anweisung zB nicht auftreten, da die Vergleiche 2 und 3 in if nur gemacht werden, wenn der erste schon true liefert. Das Programm würde also nur parsen, wenn test geändert wurde und deine Eingabe zwischen 2 und 5 liegt.
Gibst du aber andere Werte als Zahlen ein, dann müsstest du dies evtl mit einer Exception abfangen und den Benutzer hinweisen, dass er was anderes eingeben soll.
Vielleicht konnt ich helfen. Wenn nicht, dann frag einfach weiter :wink:
 
Es ist einfach nur wichtig zu wissen, dass eine NumberFormatException immer dann geworfen wird, wenn
Java API Documentation hat gesagt.:
public class NumberFormatException
extends IllegalArgumentException

Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.
Sinngemäß: Wird geworfen, um anzuzeigen, dass die Anwendung versuchte, einen String in einen numerischen Typ zu konvertieren. Der String hat aber nicht das passende Format.

Das heißt, Du musst Dir überlegen, was in dem String-Objekt enthalten ist, den Du mit der parseInt()-Methode in ein Integer-Objekt überführen willst. In den meisten Fällen sind es Zeichen eines nicht numerischen Typs, also keine Zahl.
Du kannst es Dir erst mal recht einfach machen, in dem Du mal den String vor der Übergabe an die parseInt()-Methode zum Test auf der Konsole mit
Code:
System.out.println(str);
ausgibst. Dann siehst Du genau, was der parseInt()-Methode Probleme bereitet.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben