[java] textfield: max aantal chars

Pagina: 1
Acties:

  • -Miura-
  • Registratie: Mei 2002
  • Laatst online: 19-05 21:27
is het mogelijk om voor een TextField in te stellen hoeveel characters er max in mogen staan.

dus dat je bijvoorbeeld maar 1 letter in een TF mag typen

Verwijderd

Volgens mij niet, maar je kunt wel de key-events opvangen. Je kunt bij zo'n event kijken of de tekst niet te lang is, en eventueel die tekst op pakken, korter maken en weer terug zetten.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:31

Janoz

Moderator Devschuur®

!litemod

Als je een event listener aan je textfield hangt die elke keer als er een nieuw teken bij komt de lengte van het veld bijwerkt?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • -Miura-
  • Registratie: Mei 2002
  • Laatst online: 19-05 21:27
kheb een beetje zitten klooien.

ik heb nu een textlistener aan gehangen - maar hoe haal ik precies 1 char van een textfield :s

  • Cloud
  • Registratie: November 2001
  • Laatst online: 08-05 14:53

Cloud

FP ProMod

Ex-moderatie mobster

Woutev schreef op 30 september 2004 @ 23:19:
kheb een beetje zitten klooien.

ik heb nu een textlistener aan gehangen - maar hoe haal ik precies 1 char van een textfield :s
Je hoeft niet 1 char van een textfield te halen, je kan ook de inhoud van een textfield kopieren en minus 1 char weer terug zetten ;) Dat is denk ik makkelijker. :*)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kunt ook op het model (Document) van een textfield extra functionaliteit gaan toevoegen. Je kan op die plek er voor zorgen dat er alleen getallen ingevuld mogen worden, maar je kan ook verhinderen dat er meer dan n characters ingevoerd mogen worden.

  • -Miura-
  • Registratie: Mei 2002
  • Laatst online: 19-05 21:27
Ik moet er voor zorgen dat ik in een textfield 1 cijfer in kan voeren - maar ben nog niet al te lang met java bezig - ik ben dus nog het een en ander aan het uitvinden ... maar dit vind ik nog ff wat moeilijk :(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Woutev schreef op 30 september 2004 @ 23:43:
Ik moet er voor zorgen dat ik in een textfield 1 cijfer in kan voeren - maar ben nog niet al te lang met java bezig - ik ben dus nog het een en ander aan het uitvinden ... maar dit vind ik nog ff wat moeilijk :(
utfs

En Swing kan in het begin nogal... overweldigend zijn. Maar naar verloop van tijd raak je er beter in thuis en werkt het wel erg fijn.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Janoz schreef op 30 september 2004 @ 16:25:
Als je een event listener aan je textfield hangt die elke keer als er een nieuw teken bij komt de lengte van het veld bijwerkt?
Word hiermee bedoeld dat je de lengte kan bepalen, of alleen ervoor kunt zorgen dat als er 1 karakter meer als benodigd word ingetypt je een melding hiervan krijgt.

Want als je dus 8 tekens mag gebruiken en je hebt er 8 gebruikt, kun je dan disabelen dat er meer tekens bij komen, maar dat er wel tekens af mogen?

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 19:32
Alarmnummer schreef op 30 september 2004 @ 23:25:
Je kunt ook op het model (Document) van een textfield extra functionaliteit gaan toevoegen. Je kan op die plek er voor zorgen dat er alleen getallen ingevuld mogen worden, maar je kan ook verhinderen dat er meer dan n characters ingevoerd mogen worden.
Misschien is het makkelijker om een dan een JFormattedTextField te gebruiken en een input masker in te stellen. Zou ook moeten werken...

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class LimitedTextField extends JTextField implements KeyListener {
    int limit;

    public LimitedTextField(int limit, String text) {
        super(text, limit);
        this.limit = limit;
        limit();
        super.addKeyListener(this);
    }
    public LimitedTextField(int limit) {
        this(limit, "");
    }
    private void limit() {
        String cur = getText();
        while (cur.length() > limit) {
            cur = cur.substring(1);
        }
        this.setText(cur);
    }
    public void keyPressed(KeyEvent e) {
        limit();
    }
    public void keyReleased(KeyEvent e) {
        limit();
    }
    public void keyTyped(KeyEvent e) {
        limit();
    }
}

Misschien werkt het niet in alle gevallen, maar hier werkte het wel. Misschien hoef je niet bij alle events te controleren, maar ja, had geen zin om er meer tijd in te steken :)

[ Voor 12% gewijzigd door Macros op 13-10-2004 15:46 ]

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

De beste oplossing is gewoon disabelen zodra de lengte van de inhoud even lang is als de limiet, en dan met de keylistener op een backspace wachten.

Je gaat de mist in bij select-delete en met ctrl+v, maar het is voor gewone tekstinvoer vrij nuttig.
Pagina: 1