Java - combobox y keylistener

 
Vista:

combobox y keylistener

Publicado por Soraya (20 intervenciones) el 19/06/2007 20:53:07
Hola!
Mi problema es el siguiente: tengo un jcombobox editable y pretendo que al pulsar "intro" , el texto escrito pase a ser un item mas del jcombobox, para hacer esto no tengo problema pues para ello uso el metodo addItem(). Mi problema esta en controlar la tecla pulsada, es decir el manejo de la interfaz keylistener y la implemetnacion de sus metodos.
Si alguien tiene un ejmplo del jcombox con el keylistener me seria de gran ayuda.
Gracias, Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:combobox y keylistener

Publicado por Wilmer Rondón (8 intervenciones) el 19/06/2007 21:35:38
se me ocurre esto:

[code]
class obtenerTeclas implements KeyListener
{
private String tecla;
public void keyPressed(KeyEvent e)
{
if ((tecla = e.getKeyText(e.getKeyCode())) == e.getKeyText(e.VK_ENTER)) // si la tecla presionada fue ENTER
{
//codigo para agregar item
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}

[/code]

luego agregas el evento al JComboBox

[code]
JComboBox.addKeyListener(new obtenerTeclas());
[/code]

espero que te sirva mi sugerencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por Soraya (20 intervenciones) el 20/06/2007 09:03:49
Buenos dias!
Gracias wilmer por tu respuesta, sin embargo sigue sin funcionar, es como si el jcombobox no se enterara de la teclas pulsadas puesto que he probado en general con cualquier tecla y no hace nada.
No tengo ni idea de que es lo que no funciona.
Gracias. Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por angel (537 intervenciones) el 20/06/2007 11:22:15
HOla, t pongo el codigo que tndrias k añadir pra hacer lo que quieres...l truco no esta n l comboBox, si no en su editor......es a el al que le hay que añadir los eventos de teclado..

jComboBox1.getEditor().getEditorComponent().addKeyListener(new KeyListener() {

public void keyPressed(KeyEvent e){
String texto = (String)jComboBox1.getEditor().getItem();
if(e.getKeyCode() == e.VK_ENTER){
jComboBox1.addItem(texto);
jComboBox1.setSelectedIndex(-1);
}}

public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e) {}

});

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por Soraya (20 intervenciones) el 20/06/2007 11:58:33
Gracias Ángel, despues de andar investigando descubri lo que tu me dices, mi problema aora es como hacer para no introducir elemento en el jcombobox repetidos puesto que con el metodo equals no me funciona.
Te mando mi codigo para que veas que es lo que tengo hecho y haber si se te ocurre como puedo solucionarlo:

public void keyPressed(KeyEvent e) {

if (e.getKeyText(e.getKeyCode()) == e.getKeyText(e.VK_ENTER)) {
if(combo.getEditor().getItem().equals("")){
return;
}
else{
for (int i = 0; i < combo.getItemCount(); i++) {
if(combo.getItemAt(i).equals(combo.getEditor().getItem())){
System.out.println("ya esta en la lista");
return;
}
else{
combo.addItem(combo.getEditor().getItem());
return;
}
}
}
}
}

la linea que no me esta funcionando como yo quiero es :
if(combo.getItemAt(i).equals(combo.getEditor().getItem()))

Nuevamente gracias por tu respuesta, Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por angel (537 intervenciones) el 20/06/2007 12:53:17
Lo que tiens k hacer es recojer todo los elementos del JComboBox y compararlos con el nuevo que quieres introducir...ambos como Strings, usando su metodo equals().

public void keyPressed(KeyEvent e){
String texto = (String)jComboBox1.getEditor().getItem();
if(e.getKeyCode() == e.VK_ENTER){
for(int i=0;i<jComboBox1.getItemCount();i++)
{
String tmp = (String)jComboBox1.getItemAt(i);
if(tmp.equals(texto)){
JOptionPane.showMessageDialog(null,"elemento repetido");
return;
}
}
jComboBox1.addItem(texto);
jComboBox1.setSelectedIndex(-1);
}}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por Ana (1 intervención) el 21/06/2007 08:20:45
Hola!
mi problema es el siguiente:
tengo tb un combobox, lleno de nombres. El combo es editable, y cuando el usuario escriba se tiene q posicionar en los nombres que empiece por lo que el usuario ha escrito.
No se que evento poner, si el mouseListener o el keyListener....tengo un poko de jaleo.
si me podeis orientar y poner algun ejemplo me seria de gran ayuda
Gracias

Ana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por angel (537 intervenciones) el 21/06/2007 08:56:16
Hola, pues eso es parecido a lo que se hacia en el ejemplo anterior,,se le añade un KeyListener al editor del comboBox y el codigo se inserta en el evento keyReleased()

jComboBox1.getEditor().getEditorComponent().addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {}

public void keyPressed(KeyEvent e){}

public void keyReleased(KeyEvent e){
String tex = (String)jComboBox1.getEditor().getItem();
if(tex.equals(""))
{
jComboBox1.setSelectedIndex(-1);
return;
}
for(int i=0;i<jComboBox1.getItemCount();i++)
{
String tmp = (String)jComboBox1.getItemAt(i);
if(tmp.startsWith(tex)){
jComboBox1.setSelectedIndex(i);
return;
}
}
}

});

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combobox y keylistener

Publicado por Juano (1 intervención) el 28/01/2023 22:12:44
Justo estaba intentando hacer un jComboBox dinamico, con busqueda de coincidencias a medida que se escribe en el y me salvaste jaja. No sabia que habia que poner el listener en el editor de jComboBox. Lo estaba poniendo directamente en el componente. Gracias por tu aporte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar