[JAVA] Invoermasker in textvak?

Pagina: 1
Acties:

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Hoe kan ik een invoermasker in een textvak krijgen? Dus als je in een tekstvak een datum moet invullen. dat je dan ook alleen een datum in kan voeren en geen naam ofzo.

Ducati: making mechanics out of riders since 1946


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
JFormattedTextField, te vinden in Java 2 SDK 1.4. Kijk ook naar java.text.MaskFormatter.

Zie ook hier:
http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html

Gecombineerd met de regex API kan je nog hele leukere dingen doen. Kijk bijvoorbeeld eens naar dit artikel:

http://java.sun.com/products/jfc/tsc/articles/reftf/

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 30-08 23:59
Op zaterdag 15 juni 2002 18:38 schreef MayaFreak het volgende:
Hoe kan ik een invoermasker in een textvak krijgen? Dus als je in een tekstvak een datum moet invullen. dat je dan ook alleen een datum in kan voeren en geen naam ofzo.
Dus dat je met andere woorden tijdens het type alleen cijfertjes kan intypen ? (en eventueel een / af en toe)

Je kan dit doen door een klasse te maken die afgeleid is van PlainDocument. In java wordt namelijk de inhoud (Document) en het uitzicht (view) van een textveld gescheiden. Hoe doe je dit :
code:
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
public class MijnDatumDocu extends PlainDocument {
    public void insertString (int offset, String s, AttributeSet aSet) 
      throws BadLocationException {

  //in deze methode kan je elke String die toegevoegd wordt 
  //aan het textvak gaan controlleren voor hij ooit in het 
  //textvak komt
  //Voorbeeldje : 

  char[] bron = s.toCharArray;
  char[] uitvoer = new char[s.length];

  //nu kan je met een hoopje code alle tekentje uit bron 
  //gaan controlleren, en de goede in uitvoer gaan steken.
  //hint : kijk eens in de API naar Character, die heeft 
  //een methode boolean isDigit(char c) 
  //eens de uitvoertabel goed is ingevuld doe je

  super(offset, new String(uitvoer,0,aantal_tekens_in_uitvoer), aSet);

  //met dat laatste wordt de bovenliggende klasse, 
  //PlainDocument opgeroepen en wordt de inhoud van 
  //je uitvoer-tabel TOEGEVOEGD aan wat er al stond

 }
}

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit is inderdaad de oude, beetje omslachtige manier. Sinds 1.4 adviseren ze het JFormattedField, maar op zich heeft dit ook wel iets fraais.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment