Difucultades para limitar JTextField

Buenas tardes dias, noches a todos..
paso a lo siguiente:.

Estoy haciendo una aplicacion y todos los textos que introdusco en el JTextField se conviernte a mayuscula, si activo o desactivo la tecla Mayús no surte efecto, todo caracter introducida se pone en mayuscula, hasta ahi todo bien...

El problema bien a la hora de limitar en el JTextField, establecer un determinado numero de caracteres que se puden introducir
por ejemplo pongo esta linea de codigo para liminar una JTextField

this.txtColonia.setDocument(new LimiteTexto(50));

Tengo esta clase para combertir todo en mayuscula las letras introducidas..que se llama UppercaseDocumentFilter

package Cliente.ConfigCliente;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class UppercaseDocumentFilter extends DocumentFilter {

    @Override
    public void insertString(DocumentFilter.FilterBypass fb, int offset, String text,
            AttributeSet attr) throws BadLocationException {

        fb.insertString(offset, text.toUpperCase(), attr);
    }

    @Override
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
            AttributeSet attrs) throws BadLocationException {
        fb.replace(offset, length, text.toUpperCase(), attrs);
    }
}

esa clase lo llamo desde el formulacio de la siguiente manera..
 UppercaseDocumentFilter Filter = new UppercaseDocumentFilter();

y desde el key pressed de cada JTextField es llamado de la siguiente forma

private void txtColoniaKeyPressed(java.awt.event.KeyEvent evt) {                                      
        ((AbstractDocument) txtColonia.getDocument()).setDocumentFilter(Filter);
    }

pero llamando la funcion para hacer mayusculas todo lo que se introduce..
el limite establecido lo pasa por alto, no lo respeta... solo si desabilito la funcion que hace a mayusculas
entonces si me respeta en limite establecido..

no se que estoy haciendo mal.. a la hora de llamar dichas funciones...

esto me a ocacionado que cuando recupero ese valor desde la base de datos no me muestra todo en el JTextField
y me muestra asi como en la imagen..

  • https://s25.postimg.org/qx1t3et4v/Selecci_n_032.png
  • Quien al recuperarlos alinearlo hacia la izquierda..
    tengo este linea pero no logro alinearlo

    JTextField txtColoni = new JTextField((String)dat_paciente.get(16));
    txtColoni.setHorizontalAlignment(JTextField.LEFT)
    pero no se como Asociarlo al JtextField
    de txtColonia.setText(dato-recuperadobd);

    pero no logro alinearlo.. automaticamente al recuperar de la bd.

    Quisiera tener un resultado como el de la siguiente imagen.

  • https://s25.postimg.org/qygcakkcf/Selecci_n_033.png
  • de antemano muchas gracias por sus sugerencias...

    Opciones de visualización de comentarios

    Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
    Imagen de adrianaaae

    Tamaño maximo de cadena ingresada

    Para poner un limite del tamaño de la cadena que quieras que se ingrese en un campo de texto(jtextfield)
    se puede poner un KeyListener al Componente jtextfield que quieras validar de la siguiente manera:

    public tu_constructor(){
    int tamanio_max = 10;
         jTextField_a_validar.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
                    if (jTextField_a_validar.getText().length() >= tamanio_max) //aqui lo comparas
                    {
                        e.consume();
                    }
                }
            });
    }

    Para poder responder tu segunda pregunta necesito ver el codigo y la explicacion detallada del problema o tus preguntas.

    Imagen de neko069

    Dato curioso

    En la doc de JTextField viene un ejemplo de cómo hacer una subclase que te ponga el texto en mayúsculas, y para el límite de caracteres si mal no recuerdo tiene un método llamado setColumns e incluso un constructor que te acepta un entero, para designar el número de columnas que se supone es el límite de caracteres que puedes ingresar. Podrías cotejarlo.