Hallo!
Wenn ich ein Eingabefeld habe, kann ich ja Eingaben mit einem KeyListener und consume() abfangen.
Aber man könnte ja auch Zeichen in das Feld kopieren (Strg+v), kann man das auch noch irgendwie kontrollieren bzw. abfangen?
Viele Grüße
Manny
Hallo!
Aber man könnte ja auch Zeichen in das Feld kopieren (Strg+v),
kann man das auch noch irgendwie kontrollieren bzw. abfangen?
Eine erste Idee: pruefen, ob keyEvent.getModifiers() groesser 0 ist
und dann entsprechend handeln. (shift = 1, ctrl = 2, ctrl+shift = 3 usw.)
Gruss
Patrick
Hallo, danke für die Antwort.
Ich bin mir nicht ganz sicher, aber ich meine mal gelsesen zu haben, dass wenn der Benutzer etwas in das Eingabefeld kopiert, man dieses erst als String bekommen kann und dann entscheidet, ob es in dem Textfeld angezeigt werden soll oder nicht.
So wie ich deine (ihre) Lösung verstanden habe, frage ich erstmal nur ab, ob so Tasten wie strg+v gedrückt worden sind, oder habe ich das falsch verstanden?
Viele Grüße
Manny
Moin,
So wie ich deine (ihre) Lösung verstanden habe, frage ich
erstmal nur ab, ob so Tasten wie strg+v gedrückt worden sind,
oder habe ich das falsch verstanden?
ja, so hatte ich es gemeint. getModifiers() zeigt aber nur an,
ob eine Taste wie Strg oder Shift gedrueckt wurde. Es reicht
vielleicht sowas zu machen:
if (... || (keyEvent.getModifiers() \> 0)) {
consume();
}
In das Textfeld sollten doch nur Ziffern eingegeben werden(?),
deshalb macht es ja keinen Sinn eine extra Taste zu druecken
und man kann das rigoros abfangen. So mein Gedanke.
Gruss
Patrick
Wir reden offensichtlich über SWING.
Dort enthält jedes Textfeld ein „Document“. Du könntest deshalb
folgenden Code nutzen :
JTextField text = new JTextField(…);
text.getDocument().addDocumentListener(new DocumentListener(){
void changedUpdate(DocumentEvent e ){
…
}
void insertUpdate( DocumentEvent e ){
…
}
void removeUpdate( DocumentEvent e ){
…
}
});
In den implementerten methoden kannst Du nun deine Überprüfungen
erledigen und Eingaben evtl. rückgängig machen,
Hope it helps…
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Cool, danke für die Antwort.
Allerdings würde diese Lösung doch auch verhindern, dass aus dem Eingabefeld kopiert wird.
Ich möchte eigentlich auch nicht jegliches einfügen untersagen, sondern eigentlich erstmal den einzufügenen String untersuchen und wenn er keine nichterlaubten Zeichen besitzt ihn auch durchzulassen.
Kann man das denn auch realisieren?
Viele Grüße
Manny