Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con jcombobox

Estas en el tema de Problema con jcombobox en el foro de Java en Foros del Web. hola amigos.... Tengo un problemita... tengo un combobox el cual lo lleno con datos de un archivo txt... este combobox esta en editable = true ...
  #1 (permalink)  
Antiguo 29/03/2011, 10:28
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años
Puntos: 1
Información Problema con jcombobox

hola amigos....
Tengo un problemita... tengo un combobox el cual lo lleno con datos de un archivo txt... este combobox esta en editable = true porque necesito que cuando no haya un dato que ingresen se guarde en el txt y luego cuando vuelva a abrir la ventana se llene tambien con los datos nuevos... eso ya esta funcionando super bien...


el problema es que quisiera que al presionar una tecla en el combobox... se muestre automaticamente la aproximacion de uno de los items del combo... no si me explico.. ejemplo:

en el combo hay:

pedro
carla
carlos
katty
juan

kiero que al presionar la c (xejemplo) automaticamente se ponga carla... si escribiera carlo que se ponga carlos... es decir una opcion de autocompletar...

los keyevents pressed typed y released no cogen cuando el combo es editable = true... si alguien me puede ayudar les agradeceria mucho....

Gracias...
  #2 (permalink)  
Antiguo 29/03/2011, 12:28
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 1 mes
Puntos: 20
Respuesta: Problema con jcombobox

hola mijaya...

para resolver tu problema tienes que utilizar la Clase KeySelectionManager.

este codigo que hice, te puede ayudar

Código java:
Ver original
  1. public class DmComboBox extends JComboBox {
  2.     private static final long serialVersionUID = 1L;
  3.  
  4.     public DmComboBox() {
  5.  
  6.         setKeySelectionManager(new MyKeySelectionManager());
  7.         this.setLocation(100, 100);
  8.     }
  9.  
  10.     class MyKeySelectionManager implements JComboBox.KeySelectionManager {
  11.         long lastKeyTime = 0;
  12.         String pattern = "";
  13.  
  14.         public int selectionForKey(char aKey, ComboBoxModel model) {
  15.             int selIx = 01;
  16.             Object sel = model.getSelectedItem();
  17.             if (sel != null) {
  18.                 for (int i = 0; i < model.getSize(); i++) {
  19.                     if (sel.equals(model.getElementAt(i))) {
  20.                         selIx = i;
  21.                         break;
  22.                     }
  23.                 }
  24.             }
  25.  
  26.             long curTime = System.currentTimeMillis();
  27.  
  28.             if (curTime - lastKeyTime < 300) {
  29.                 pattern += ("" + aKey).toLowerCase();
  30.             } else {
  31.                 pattern = ("" + aKey).toLowerCase();
  32.             }
  33.  
  34.             lastKeyTime = curTime;
  35.  
  36.             for (int i = selIx + 1; i < model.getSize(); i++) {
  37.                 String s = model.getElementAt(i).toString().toLowerCase();
  38.                 if (s.startsWith(pattern)) {
  39.                     return i;
  40.                 }
  41.             }
  42.  
  43.             for (int i = 0; i < selIx; i++) {
  44.                 if (model.getElementAt(i) != null) {
  45.                     String s = model.getElementAt(i).toString().toLowerCase();
  46.                     if (s.startsWith(pattern)) {
  47.                         return i;
  48.                     }
  49.                 }
  50.             }
  51.             return -1;
  52.         }
  53.     }
  54.  
  55.     public static void main(String[] args) {
  56.         JFrame fr = new JFrame();
  57.         DmComboBox dm = new DmComboBox();
  58.         dm.addItem("Beatriz");
  59.         dm.addItem("Ana");
  60.         dm.addItem("Vanessa");
  61.         dm.addItem("Janeth");
  62.         dm.addItem("Yola");
  63.         dm.addItem("Silvia");
  64.         dm.addItem("Jhovana");
  65.         dm.addItem("Lizet");
  66.         fr.add(dm, BorderLayout.CENTER);
  67.         fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  68.         fr.setSize(300, 60);
  69.         fr.setVisible(true);
  70.     }
  71. }


espero haberte ayudado, saludos
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.
  #3 (permalink)  
Antiguo 29/03/2011, 16:49
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con jcombobox

gracias sivadmp.... tu codigo es mui interesante... pero se lo puede hacer de una manera mas sencilla... Creo que no me he explicado muy bien... la propiedad editable del combobox es true es decir
combo.setEditable(true);

si le añado a tu codigo

DmComboBox dm = new DmComboBox();
--> dm.setEditable(true);
dm.addItem("Beatriz");
dm.addItem("Ana");
.
.
.


no sirve ai... pero gracias de todos modos

Etiquetas: jcombobox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.