Java - limitar caracteres en un jtextfield de java

 
Vista:
sin imagen de perfil

limitar caracteres en un jtextfield de java

Publicado por anonymous (38 intervenciones) el 02/01/2017 06:34:34
hola. alguien ha tenido que limitar la cantidad de caracteres de los los jtextfield en java al ancho que se muestran en pantalla.. es decir que si pretendo escribir mas de lo que cabe en él, no me lo permita... Se que se puede hacer con el keytyped para cada cuadro de texto... pero el problema es que quiero un método generico porque los JTextfield no son todos del mismo tamaño y si lo hiciera de esta manera tendría que hacerlo para cada uno..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 87
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

limitar caracteres en un jtextfield de java

Publicado por Tomas (76 intervenciones) el 02/01/2017 11:49:18
Tienes que usar esta clase:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class TextLengthDocFilter extends DocumentFilter {
		      private int maxTextLength;
 
		      /**
		       * Limita a x caracteres el Document que tenga asignado esta clase.
		       * @param maxTextLength - El numero maximo de caracteres
		       */
		      public TextLengthDocFilter(int maxTextLength) {
		         this.maxTextLength = maxTextLength;
		      }
 
		      private boolean verifyText(String text) {
		         return text.length() <= maxTextLength;
		      }
 
		      @Override
		      public void insertString(FilterBypass fb, int offset, String string,
		               AttributeSet attr) throws BadLocationException {
 
		         Document doc = fb.getDocument();
		         String oldText = doc.getText(0, doc.getLength());
		         StringBuilder sb = new StringBuilder(oldText);
		         sb.insert(offset, string);
 
		         if (verifyText(sb.toString())) {
		            super.insertString(fb, offset, string, attr);
		         }
 
		      }
 
		      @Override
		      public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs)
		               throws BadLocationException {
		         Document doc = fb.getDocument();
		         String oldText = doc.getText(0, doc.getLength());
		         StringBuilder sb = new StringBuilder(oldText);
 
		         sb.replace(offset, offset + length, text);
		         if (verifyText(sb.toString())) {
		            super.replace(fb, offset, length, text, attrs);
		         }
		      }
 
		      @Override
		      public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
		         Document doc = fb.getDocument();
		         String oldText = doc.getText(0, doc.getLength());
		         StringBuilder sb = new StringBuilder(oldText);
 
		         sb.replace(offset, offset + length, "");
 
		         if (verifyText(sb.toString())) {
		            super.remove(fb, offset, length);
		         }
		      }
  }

Y esto:
1
2
PlainDocument doc= (PlainDocument) tuTextField.getDocument();
doc.setDocumentFilter(new TextLengthDocFilter(6));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 87
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

limitar caracteres en un jtextfield de java

Publicado por Tomas (76 intervenciones) el 02/01/2017 15:29:25
Entonces de alguna manera , deberías cambiar:
1
doc.setDocumentFilter(new TextLengthDocFilter(numeroDeCaracteres));
en base a las dimensiones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar