Tastendruck abweisen

Status
Nicht offen für weitere Antworten.

sg181

Mitglied
Hallo, Leute.

Habe folgendes Problem:
ich möchte in einem Textfeld nur bestimmte Eingaben zu lassen (um genau zu sein: alle Zahlen, Backspace, Del, Richtungstasten, evtl noch Pos1 und Ende).
Wollte das jetzt so regeln, daß das Textfeld nen KeyListener bekommen hat.
Da guck ich dann mittels getKeyCode() nach, was gedrückt wurde.

Ich hab allerdigns leider nicht rausgefunden, wie ich das drücken einen unzulässigen Taste abweise.
Also, wenn jemand 'a' drückt, soll nix passieren, daß a darf nicht im Textfeld erscheinen.

Kennt jemand diese Methode oder weiß jemand vielleicht ne bessere Art mein Problem zu lösen?

Danke schon mal
sg181
 
B

Beni

Gast
Guck dir das JFormateTextField an. Damit kannst du ziemlich genau angeben, was der User eingeben darf/nicht darf.

Es gibt auch vorgefertigte Formate für Dezimalzahlen, das Datum, und dann gibts noch irgendein verrücktes Ding von dem ich jetzt nicht weiss was es macht (das MessageFormat), das aber mächtig aussieht.
 

sg181

Mitglied
Das ist schon mal nicht schlecht.
Aber wenn ich mich nicht täusche, werden die Eingaben erst validiert wenn ich das Feld verlasse (oder?).

Das wäre auch ok, aber noch lieber wäre es mit, wenn falsche Zeichen einfach gar nicht akzeptiert werden würden.
 

SnooP

Top Contributor
Ich vermutete, dass es am einfachsten wäre, wenn man ne neue Klasse von JTextField erben lässt.. ein Blick in die Sourcen eröffnet jenes:
* Customized fields can easily be created by extending the model and
* changing the default model provided. For example, the following piece
* of code will create a field that holds only upper case characters. It
* will work even if text is pasted into from the clipboard or it is altered via
* programmatic changes.
* <pre><code>

&public class UpperCaseField extends JTextField {
&
& public UpperCaseField(int cols) {
& super(cols);
& }
&
& protected Document createDefaultModel() {
& return new UpperCaseDocument();
& }
&
& static class UpperCaseDocument extends PlainDocument {
&
& public void insertString(int offs, String str, AttributeSet a)
& throws BadLocationException {
&
& if (str == null) {
& return;
& }
& char[] upper = str.toCharArray();
& for (int i = 0; i < upper.length; i++) {
& upper = Character.toUpperCase(upper);
& }
& super.insertString(offs, new String(upper), a);
& }
& }
&}

Demnach geht alles über die insertString-Methode der Document-Klasse... dort muss man dann also die unerwünschten Zeichen abfangen...
Das ist aber jetzt erstmal nur nen Schuss ins Blaue ;)
 

sg181

Mitglied
Hey, perfekt, ihr Beiden. Man sollte die FAQs eben doch mal durchlesen.
Genau das was ich wollte.

Kleiner Tip noch: wenn man möchte, daß falsche Buchstaben gar nicht im Textfeld erscheinen, dann muß die Zeile

Code:
super.insertString(offset,s,attributeSet);

mit in den Try-Block!
 

thE_29

Top Contributor
Tjojo :)

Die geht schon die Klasse, die NegativeDoubleDocument ist jetzt auch neu (durch aufmerksam machen von Sky ;))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Wie kann ich Images per Tastendruck anzeigen/einfügen? Java Basics - Anfänger-Themen 3
B Tastendruck zurücksetzen Java Basics - Anfänger-Themen 4
F Langer Tastendruck bei Fernbedienung Java Basics - Anfänger-Themen 3
T Tastendruck simulieren Java Basics - Anfänger-Themen 13
S Beliebigen Tastendruck "einlesen" (ohne Konsole) Java Basics - Anfänger-Themen 3
TheSorm java Schleife beenden per Tastendruck Java Basics - Anfänger-Themen 10
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
X Erste Schritte Spielstart per Tastendruck Java Basics - Anfänger-Themen 10
U Thread reagiert nicht sofort auf Tastendruck Java Basics - Anfänger-Themen 14
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
Draculajr Tastendruck abwarten Java Basics - Anfänger-Themen 5
H Tastendruck simulieren | SendKeys Java Basics - Anfänger-Themen 12
S Schleife per Tastendruck abbrechen Java Basics - Anfänger-Themen 7
R Aktion bei Tastendruck Java Basics - Anfänger-Themen 5
E Programmsteuerung per Tastendruck Java Basics - Anfänger-Themen 4
G Tastendruck Java Basics - Anfänger-Themen 13
T reaktion auf Tastendruck Java Basics - Anfänger-Themen 2
M Tastendruck. Java Basics - Anfänger-Themen 2
P String zu Date bei jedem Tastendruck parsen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben