Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - TOSHIBA

#1
Hola amigos,

Tengo un problema con mi código, he realizado bien el ejercicio, me realiza la búsqueda, muestra los resultados de la búsqueda con coincidencia.

El problema es que no me deja digitar mas de un caracter en el Jcombobox, al tipear un letra esta queda seleccionada y esto procova que al tipear otro caracter este borre el anterio. Me pueden ayudar?

Tengo un Jpanel donde tengo el siguiente codigo en el constructor "initComponents();"

Código: php

/////INICIO DEL BUSCAR DESDE EL JCOMBOBOX

        vbuscarbox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent evt) {

                String cadenaEscrita = vbuscarbox.getEditor().getItem().toString();
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    if (comparar(cadenaEscrita)) {// compara si el texto escrito se ecuentra en la lista
                        // busca el texto escrito en la base de datos
                        buscar(cadenaEscrita);
                    } else {// en caso contrario toma como default el elemento 0 o sea el primero de la lista y lo busca.
                       buscar(vbuscarbox.getItemAt(0).toString());
                       vbuscarbox.setSelectedIndex(0);
                    }
                }
                //No permite digitar algo diferente de letras
                if (evt.getKeyCode() >= 65 && evt.getKeyCode() <= 90 || evt.getKeyCode() >= 96 && evt.getKeyCode() <= 105 || evt.getKeyCode() == 8) {
                    vbuscarbox.setModel(operacion.getLista(cadenaEscrita));
                    if (vbuscarbox.getItemCount() > 0) {
                        vbuscarbox.getEditor().setItem(cadenaEscrita);
                        vbuscarbox.showPopup();
                    }
                        else {
                        vbuscarbox.addItem(cadenaEscrita);
                    }
                }
            }
        });
////FIN DEL BUSCAR DESDE EL JCOMBOBOX


y he creado dos metodos mas:

Código: php

public void buscar(String nombre) {
        String datos[] = operacion.buscar(nombre);

        if (datos[0] != null) {
//            jTextField1.setText(datos[0]);
//            jTextField2.setText(datos[1]);
//            jTextField3.setText(datos[2]);
//            jTextField4.setText(datos[3]);

        } else {
        }
    }

    private boolean comparar(String cadena) {

        Object[] lista = vbuscarbox.getComponents();
        boolean encontrado = false;
        for (Object object : lista) {
            if (cadena.equals(object)) {
                encontrado = true;
                break;
            }

        }
        return encontrado;
    }



Y la clase BuscarCargoUsuario asi:

Código: php

package Util;

import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;

/**
*
* @author Dragon
*/
public class BuscarCargoUsuario {

    public DefaultComboBoxModel getLista(String cadenaEscrita){

        DefaultComboBoxModel modelo = new DefaultComboBoxModel();

        try {
            Util.Conexion con = new Util.Conexion(Util.Conexion.ipdb, Util.Conexion.portdb, Util.Conexion.namedb, Util.Conexion.userdb, Util.Conexion.passdb);
            con.ConexionMySQL();
            String query = "SELECT NombreGrupo FROM us_grupocar WHERE NombreGrupo LIKE '%" + cadenaEscrita + "%';";
            java.sql.ResultSet rs = con.consultar(query);

            while (rs.next()) {
                modelo.addElement(rs.getString("NombreGrupo"));
            }
        } catch (ClassNotFoundException | SQLException | InstantiationException | IllegalAccessException ex) {
            Logger.getLogger(BuscarCargoUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }


        return modelo;
    }


    public String[] buscar(String nombre){

        String[] datos = new String[4];
        try {
            Util.Conexion con = new Util.Conexion(Util.Conexion.ipdb, Util.Conexion.portdb, Util.Conexion.namedb, Util.Conexion.userdb, Util.Conexion.passdb);
            con.ConexionMySQL();
            String query = "SELECT NombreGrupo FROM us_grupocar WHERE NombreGrupo LIKE '%" + nombre + "%';";
            java.sql.ResultSet rs = con.consultar(query);

            while (rs.next()) {
                for (int i = 0; i < datos.length; i++) {
                    datos[i] = rs.getString(i + 1);
                }
            }
        } catch (ClassNotFoundException | SQLException | InstantiationException | IllegalAccessException ex) {
            Logger.getLogger(BuscarCargoUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return datos;
    }

}


Al ejecutar la aplicación e iniciar una búsqueda, los caracteres digitados queda sombreado y esto hace que el siguiente carácter reemplace el anterior.



Uso Netbeans 8.2 y MariaDB 10

Alguien puede ayudarme a solucionarlo?

#2
El buscador no funciona bien.
#3
Gracias gabriela!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias por el aporte, y pobres aquellos que hacen la instalación recomendada, si nos la cuelan a nosotros, a la gente que no pase del "siguiente > siguiente" ni me imagino  ;D

Tienes razón H4R4K1R1
#4
Windows / Re:Modo Dios en Windows 10
Diciembre 13, 2017, 01:20:00 PM
Wow  :o no conocía eso del modo dios en Windows, Gracias!