Limitar los caracteres de un JComboBox editable en netbeans

Estoy desarrollando una aplicación con netbeans donde pongo un JComboBox editable. Necesito que cuando se edite el Combo solo deje poner 10 caracteres.

He buscado por varios sitios y no encuenro nada. Entiendo que en las propiedades del Combo en netbeans habrá algo de esto pero no doy con él.

2 Respuestas

Respuesta
1

Entiendo que te refieres a limitar la cantidad de elementos que un JComboBox muestra.

Para esto puedes seguir dos vías dependiendo de lo que necesites:

  1. Si inicializas el ComboBox directamente con un array de elementos o con un Vector de elementos como se indica en la documentación de Java:
    https://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html 
    Puedes simplemente comprobar que ese array de entrada o ese Vector no superen la cantidad que tu quieres. P.Ej.:
    // Siendo ArrayEntrada el array de elementos del ComboBox
    JComboBox comboBox;
    if (ArrayEntrada.length <= 10) {
        comboBox = new JComboBox(ArrayEntrada);
    }
    //*********************************************************
    // Siendo VectorEntrada el Vector de elementos del ComboBox
    JComboBox comboBox;
    if (VectorEntrada.size() <= 10) {
        comboBox = new JComboBox(ArrayEntrada);
    }
  2. Si ya tienes elementos en el ComboBox y los quieres añadir de forma dinámica pero sin pasarte de el límite que estableces simplemente puedes comprobar el tamaño de tu JComboBox antes de añadir el elemento nuevo. P.Ej.:
    /*
      Utilizo un elemento de tipo E
      Por ser el tag de template que se usa en la documentación,
     pero tú usa el tipo de datos que estés utilizando.
    */
    agregarElementoAComboBox(E Elemento, JComboBox jcb) {
       if (jcb.getItemCount() <= 10) {
          jcb.add(Elemento);
       }
    }

Corrijo los códigos que justo los acabo de enviar y he visto un fallo gordo.

En todos los if utilizo <= 10 esto está mal. Es <10.

Hola Joseka. No se trata de limitar la cantidad de elementos del Combo.

Al ser editable (el usuario, podrá elegir un elemento o escribir lo que equivale al elemento), se trata de limitar la cantidad de dígitos que el usuario podrá escribir.

En Netbeans, cuando se pone un Combo en las propiedades tiene un cuadrito para marcar que es editable.

Entiendo que como es tan fácil marcar que es editable, debe de tener alguna opción para limitar la cantidad de dígitos.

Lo comento por si te da alguna pista de como solucionarlo.

Gracias y saludos

Entiendo, entonces lo que quieres limitar es el contenido del ComboBox o su nombre.

La verdad es que nunca he utilizado NetBeans para programar de forma tan gráfica como marcar un cuadro para seleccionar una opción así que no se si existirá de forma gráfica algo que resuelva tu problema.

Lo que si puedo decirte es cómo arreglarlo a nivel de código.

Dependiendo del tipo de dato que le introduzcas al ComboBox puedes resolverlo de una forma o de otra. Cómo me has dicho dígitos supondré que quieres meter números (presumiblemente números enteros) por lo que puedes simplemente mirar si el número supera las X cifras antes de aceptar la edición de ComboBox:

public boolean numeroMasDeNDigitos(int numero, int digitos) {
    return numero > (int)(Math.pow(10, digitos) - 1);
}

Controlas si el número tiene más del número de dígitos máximos que necesitas y si se pasa deniegas la edición.

if (!numeroMasDeNDigitos(entrada, NUMERO_DIGITOS)) {
    EditarComboBox(...);
}

Ten en cuenta que si la entrada es un Stirng puedes comprobar su tamaño con la función 

.length()

Se me ha envíado antes de tiempo por un fallo con mi red.

Bueno, lo que te comentaba. Puedes comprobar el tamaño de un String con el método length().

Ahora bien, si quieres comprobar números reales (floats o doubles) la cosa cambia ya que hay que tener en cuenta la parte entera y la mantisa para calcular el tamaño.

Coméntame si esto resuelve tu problema o que tipo de datos introduces en tu ComboBox pro si te puedo echar una mano en cómo comprobar el tamaño de la entrada.

Respuesta
1

Revisa en las propiedades, ya que así como marcas simplemente el check para que sea editable, debe tener una propiedad que sea algo así como: maxLength, o Length simplemente. No he trabajado con NetBeans por eso no lo domino con exactitud, pero en VisualStudio.NET es muy sencillo hacer esto que quieres, así que supongo también lo sea en NetBeans.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas