Limitar un JTextField a un nº de caracteres
He visto tu respuesta alguien que preguntó por lo mismo. Esta era tu solución:
import javax.swing.text.*;
import javax.swing.*;
public abstract class LimitadorDeTexto implements AbstractDocument
{
private int limiteDeCaracteres;
public LimitadorDeTexto(int limiteDeCaracteres )
{
this.limiteDeCaracteres = limiteDeCaracteres;
}
public void insertString(int offs,String str,AttributeSet a)throws BadLocationException
{
if ( getLength() + str.length() > limiteDeCaracteres )
{
java.awt.Toolkit.getDefaultToolkit().beep();
}
else
{
insertString(offs,str,a);
}
}// fin metodo
}// fin clase
/*, para usar esta clase tienes que hacer lo siguiente:
import javax.swing.*;
public class Prueba {
public static void main( String [] a ){
// este sera un limitador para 20 caracteres
LimitadorDeTexto limitador = new Limitador(20);
JTextField campo = new JTextField();
campo.setDocument(limitador);
// esto es para mostrarlo
JOptionPane.showMessageDialog(null,campo);
System.exit(0);
}
}
y listo, pruebalo y veras que no te deja meter más de 20 caracteres.
*/
Bueno pues yo he probado a crear esa clase LimitadorDeTexto y... Me da error en la primera linea en AbstractDocument. (El error dice que: inserte una interface). Yo la verdad es que no tengo mucha idea de todo esto y no consigo solucionarlo.
¿Podrías echarme un cable?
Gracias
import javax.swing.text.*;
import javax.swing.*;
public abstract class LimitadorDeTexto implements AbstractDocument
{
private int limiteDeCaracteres;
public LimitadorDeTexto(int limiteDeCaracteres )
{
this.limiteDeCaracteres = limiteDeCaracteres;
}
public void insertString(int offs,String str,AttributeSet a)throws BadLocationException
{
if ( getLength() + str.length() > limiteDeCaracteres )
{
java.awt.Toolkit.getDefaultToolkit().beep();
}
else
{
insertString(offs,str,a);
}
}// fin metodo
}// fin clase
/*, para usar esta clase tienes que hacer lo siguiente:
import javax.swing.*;
public class Prueba {
public static void main( String [] a ){
// este sera un limitador para 20 caracteres
LimitadorDeTexto limitador = new Limitador(20);
JTextField campo = new JTextField();
campo.setDocument(limitador);
// esto es para mostrarlo
JOptionPane.showMessageDialog(null,campo);
System.exit(0);
}
}
y listo, pruebalo y veras que no te deja meter más de 20 caracteres.
*/
Bueno pues yo he probado a crear esa clase LimitadorDeTexto y... Me da error en la primera linea en AbstractDocument. (El error dice que: inserte una interface). Yo la verdad es que no tengo mucha idea de todo esto y no consigo solucionarlo.
¿Podrías echarme un cable?
Gracias
Respuesta de alejosoft
1