Reza
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
Black Dove
Tach.
Wenn ich Dich richtig verstanden habe, ist Dein Problem, dass die Eingaben verzögert in der awt-Komponente dargestellt werden?
Ach nee. Die Abfrage in der anonymen Klasse stellt nicht das gewünschte da..
Du bist zu schnell
Die awt-Komponente ist noch nicht upgedatet und Du versuchst schon, sie auszulesen. Im Notfall schau doch mal mit dem Debugger, was eigentlich zuerst passiert... Vermutlich reagiert er erst auf das keyPressed... Informiere Dich weiter über das Massagemodel von awt... Wenn man sich da mal einliest und eindebuggt erklärt das vieles
Eine Lösung, wenn auch uinheimlich unschön wäre, einen Thread niederer Priorität zu starten, und damit das TextFeld zu überwachen.
Ich habe das nicht mehr genau in der Erinnerung, aber guck noch mal, ob Du mit dem actionListeners auf dem textfeld was anfangen kannst...
Hilft das?
mfg
Reza
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);
...
MissM@rple
*hola* wie komm ich denn zu der Ehre, hier zitiert zu werden? *fg*
MM