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.

    Imagen de pechsclk

    no me habia dado cuenta

    no me habia dado cuenta con lo de setColumns.
    Lo probe poniendo una un numero especibo y si funciona, pero cuando llamo a la clase para convetir a mayusculas igual lo pasa por alto ya no le respeta..
    bueno bueno pasando a eso,, ya mejor desabilite eso de que solo sea mayuscula...
    ahora mi problemita que tengo esque.. quiero ordenar el contenido del jtexfield a la izquierda.. pero deja describir que resultado deseo obtener

    recupero la informacion de la base de datos...
    y tengo varios texfield y muestro la informacion en cada uno de ellos,

    hago esto de la siguiente forma..

    txtAp.setText(dato_recuperado);
    txtAp.setHorizontalAlignment(txtAp.LEFT);

    lo que pasa esque en el texfiel muestra cierto cantidad de caracteres, pero el dato recuperado trae mas, tonces lo que se muestra
    es la parte final de la cadena,
    lo que quiero hacer es que me muestre desde el inicio de la cadena, y ya so quiero ver copleto pongo el cursor en el texfield y presiono la tecla fin o mueblo las teclas de navegacion.
    si lo pongo a la derecha y el contenido es corto si lo ordena
    txtAp.setHorizontalAlignment(txtAp.RIGHT);
    ------------------------------------------------------------------------
    no se si alguien a tenido ese detalle. acepto sugerencias.. no se como hacer
    para que se mestre el inicio de la cadena en jtexfiel.

    Imagen de pechsclk

    ordenado a la izquierda

    La solucion es poner JTextield.setCaretPosition(0); despues de cargar la info desde la base de datos.

    txtcp.setCaretPosition(0);

    Espero que alguien le sirva

    Gracias por compartir

    Gracias por compartir tu solución del caret position, me llamo la atencion que el limite te funciona y el uppercase no, yo me enfrenté a eso y pude setear un limite ademas de poner todo en mayuculas.

    Compartiré mi solución más adelante.

    Imagen de pechsclk

    Compartiré mi solución

    Se le agradece... eso es bueno para compartir inf.