Wie kann ich den Inhalt eines Textfeldes sofort anzeigen??



  • Hallo,

    ich habe folgendes Problem:

    Wie kann ich den Inhalt eines Textfeldes sofort anzeigen??
    Wir müssen nur die Methode public void keyPressed(KeyEvent e)
    einsetzen, da unter dem PDA-Gerät, die wir einsetzen, wird die Methode keyReleased nicht unterstützt!!

    Codefragment:

    TextField t = new TextField();

    t.addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent e)
    {
    System.out.println("Text: " + t.getText());
    }
    });

    Wenn ich jetzt in meinem Textfeld eine 1 eingebe, dann wird am Bildschirm
    nur Text: ausgegeben, also ohne Inhalt, die 1 wird erst am Bildschirm angezeigt, wenn man nochmal eine Zahl eingibt!!!

    Eingabe: 1
    Text:

    Eingabe: 12
    Text: 1

    Wir können leider die Methode public void keyReleased(KeyEvent e) nicht einsetzen, sonst hätte ich schon das Problem gelöst!

    Was muss ich noch tun, um auf den Inhalt sofort zugreifen????

    Vielen Dank im Voraus 🙂



  • Has'te denn keyTyped?

    Wenn nicht kann'ze ja noch bei keyPressed den KeyEvent auswerten, da steht ja schließlich auch drin welche Taste gedrückt wurde und das ganze mit den bisherigen Inhalt des Textfeldes zusammenfrickeln (muss aber bei Backspace & Co aufpassen).

    O'Dog



  • Hallo,

    es gibt zwei Lösungen:

    Lösung 1:

    sb ist einer StringBuffer und ist unter anderem eine Membervariable.

    public void keyPressed(KeyEvent e)
    {
    if(Character.isDigit(e.getKeyChar()))
    {
    sb.append(e.getKeyChar());
    }
    if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE)
    {
    if(sb.length() > 0)
    {
    sb.deleteCharAt(sb.length()-1);
    }
    }
    System.out.println("sb.toString(): " + sb.toString());
    }
    });

    Lösung 2 von MissM@rple:

    int temp =0;
    TextField tf = new TextField();
    TextListener tl = new TextListener()
    {
    public void textValueChanged(TextEvent te)
    {
    TextField textfield = (TextField)te.getSource();
    String s = textfield.getText();
    temp=Integer.valueOf(s).intValue(); //temp enthält immer den aktuellen Wert des TextFeldes
    .....
    }
    };
    tf.addTextListener(tl);
    ...



  • @Reza: Würdest Du bitte die Code-Tags verwenden? Danke!



  • Hi!

    Was meinst Du mit Code-Tags??

    Danke 🙂



  • [code]
    //dazwischen dein code in formatierter form damit man was sieht ;)
    

    [/code]



  • Sicherlich wirst du bemerkt haben, dass Deine Codes, die du hier postest nicht besonders gut (von der Optik her) aussehen. Damit man das auch gut lesen kann hat dieses Forum (ganz im Gegensatz zu anderen Foren) sogar Syntax-Coloring.

    Das heisst wenn Du einen Code wie:

    TextField t = new TextField();

    t.addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent e)
    {
    System.out.println("Text: " + t.getText());
    }
    });

    eingibst und diesen mit Code-Tags versiehtst sieht er plötzlich ganz anders aus und lässt sich wesentlich leichter lesen:

    [java]TextField t = new TextField();

    t.addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent e)
    {
    System.out.println("Text: " + t.getText());
    }
    });[/code]

    Mehr Informationen dazu findest Du hier



  • Danke 😉

    Ich habe die Codefragmente in Windows - Notepad
    geschrieben und nicht in JBuilder, deshalb war die Formatierung so
    schlecht!

    Sorry!

    mfg Reza 🙂



  • Würde aber dennoch zu der Lösung mit dem TextListener raten.
    Bei der anderen Lösung mit keyPressed ist Backspace net das einzige Problem :).
    Weiß aber auch net was so'n PDA alles für Tasten hat.

    O'Dog



  • Hallo O'Dog,

    das werde ich tun.

    Danke 😉

    Gruss Reza 🙂



  • Reza: Das hat nichts mit Notepad zu tun. Du mußt die Code-Tags im Forum hier benutzen, sonst ist es auch mit dem JBuilder so unformatiert. 😃


Anmelden zum Antworten