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

Problema con jcheckbox

Estas en el tema de Problema con jcheckbox en el foro de Java en Foros del Web. Estoy haciendo un proyecto con conexión a base de datos desde donde obtengo bastantes datos. Entre los datos a destacar es que yo por ejemplo ...
  #1 (permalink)  
Antiguo 21/03/2015, 15:58
Avatar de Khaooos  
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Problema con jcheckbox

Estoy haciendo un proyecto con conexión a base de datos desde donde obtengo bastantes datos.

Entre los datos a destacar es que yo por ejemplo tengo tipos de cuenta "débito" y "crédito" por mencionar algunas, estas se traen mediante una consulta y se le asignan a unos checkbox quedando cmb0, cmb1 así, el cual obtengo mediante arreglos cmb[ i], todo funciona bien tomando en cuenta que obtiene el nombre y demás


El problema esta en que si lo selecciono debería devolver un isSelected()=true, pero siempre devuelve un false ya que aparentemente no tiene listener, y estuve buscando y acá encontré este tema donde menciona el como hacer la mayoría y si lo pruebo funciona, regresa true cuando clickeo y false cuando des selecciono, pero ahora mi pregunta



¿como puedo usar lo que obtengo de acá en un botón donde debo verificar la selección para poder ejecutar una consulta en una base de datos?

  #2 (permalink)  
Antiguo 24/03/2015, 05:35
 
Fecha de Ingreso: enero-2015
Ubicación: Madrid
Mensajes: 76
Antigüedad: 9 años, 4 meses
Puntos: 5
Respuesta: Problema con jcheckbox

Hola Khaooos, no sé si entiendo tu pregunta:

Cita:
¿como puedo usar lo que obtengo de acá en un botón donde debo verificar la selección para poder ejecutar una consulta en una base de datos?
A ver tienes un panel con unos JCheckBox, y quieres saber cuales han sido seleccionados...

¿Cuando quieres comprobar los elementos seleccionados?

-Si es cuando el usuario pulsa sobre los JCheckBox, tu evento es itemstatechanged.

Código PHP:
jcheckbox1 = new JCheckBox("Primer checkBox");
        
jcheckbox2 = new JCheckBox("Segundo checkBox");
        
//Tamaño del componente
        
jcheckbox1.setBounds(1010200200);
        
jcheckbox2.setBounds(25010200200);
        
//CREAMOS EL EVENTO
        
ItemListener listener = new ItemListener() {
            @
Override
            
public void itemStateChanged(ItemEvent e) {
                
jCheckBoxItemStateChanged(e);//Metodo que será llamado en cada evento
            
}
        };
        
//AÑADIMOS EL MISMO EVENTO PARA LOS JCheckBox.
        
jcheckbox1.addItemListener(listener);
        
jcheckbox2.addItemListener(listener);
        
//Añadimos a la ventana.
        
add(jcheckbox1);
        
add(jcheckbox2); 
Ahora nos queda definir el metodo que será llamado en cada evento producido por los JCheckBox.

Código PHP:
private void jCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {                                            
        
// ¿Que objeto lanza el evento?
        
if(evt.getItem() == jcheckbox1) {
            
jLabelObjeto.setText("Objeto check box 1");
        } else if(
evt.getItem() == jcheckbox2) {
            
jLabelObjeto.setText("Objeto dos");
        }
        
//Comprobamos que tipo de evento ha sido generado.
        
if(evt.getStateChange() == ItemEvent.SELECTED) {
            
jLabelSeleccionado.setText("Seleccionado");
        } else if(
evt.getStateChange() == ItemEvent.DESELECTED) {
            
jLabelSeleccionado.setText("Deseleccionado");
        }
    } 
Existe muchos eventos, depende de cual necesites, pero con estos dos creo que tienes para tu caso.

-Si tu interfaz tiene un boton y quieres hacer la comprobación cuando el usuario pulse el boton:

Código PHP:
//BOTON
        
jButton1 = new JButton();
        
jButton1.setText("Comprobar checkBox");
        
jButton1.setBounds(505050100);
        
//Creamos el oyente.
        
jButton1.addActionListener(new java.awt.event.ActionListener() {
            @
Override
            
public void actionPerformed(java.awt.event.ActionEvent evt) {
                
//Metodo que será ejecutado cuando se pulse el boton
                
jButton1ActionPerformed(evt);
            }
        });
        
add(jButton1); 
El metodo:
Código PHP:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
// Comprobar que JCheckBox han sido seleccionados.
        
if(jcheckbox1.isSelected()) {
            
//JCheckBox Seleccionado.
        
}
    } 
Un saludo!
  #3 (permalink)  
Antiguo 24/03/2015, 15:12
Avatar de Khaooos  
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con jcheckbox

Si, es algo así lo que requiero, pero como se crean dinamicos, osea desde la bd si la bd regresa 3 datos mismos son ingresados como checkbox, si se borra uno de la bd mismo que se borra de la lista, todo eso lo estoy generando desde codigo asi.

Código PHP:
try {
            Class.
forName("com.mysql.jdbc.Driver");
            
Connection conexion DriverManager.getConnection("jdbc:mysql://localhost/cajeroVentana1""root""aj8b7.*");
            
//Consultar Dafinal tos
            
int i 00;
            
checkboxes = new ArrayList<>();
            
Statement st conexion.createStatement();
            
ResultSet rs st.executeQuery("SELECT * FROM cuentas ");
            while (
rs.next()) {
                
JCheckBox checkbox = new JCheckBox();
                
checkbox.setLabel(rs.getString("cuentascol"));
                
checkbox.addItemListener(itemListener);
                
checkbox.setBounds(1020 + (20), 16023 + (10));
                
checkboxes.add(checkbox);
                
jPanel15.add(checkbox);
                
i=i+1;
            }
            
// crea un array que hacen referencia a los estados de los checkboxes
            
checkboxStates = new Boolean[checkboxes.size()];
            for(
Boolean state checkboxStates)
                
state false;
            
checkboxes = new ArrayList<>();
            
rs st.executeQuery("SELECT * FROM cuentas ");
            while (
rs.next()) {
                
JCheckBox checkbox = new JCheckBox();
                
checkbox.setLabel(rs.getString("cuentascol"));
                
checkbox.addItemListener(itemListener);
                
checkbox.setBounds(1020 + (20), 16023 + (10));
                
checkboxes.add(checkbox);
                
jPanel16.add(checkbox);
                
j=j+1;
            }
            
// crea un array que hacen referencia a los estados de los checkboxes
            
checkboxStates = new Boolean[checkboxes.size()];
            for(
Boolean state checkboxStates)
                
state false;
            
total_checkbox=j;
            
rs.close();
        } catch (
ClassNotFoundException SQLException NumberFormatException e) {

        } 
y el listener así
Código PHP:
ItemListener itemListener = new ItemListener() {
        @
Override
        
public void itemStateChanged(ItemEvent evt) {
            
JCheckBox checkbox = (JCheckBoxevt.getItem();
            if(
evt.getStateChange() == ItemEvent.SELECTED) {
                
System.out.println("Seleccionado!");
                
checkbox.setSelected(true);
            }
            else{
                
System.out.println("Deseleccionado!");
                
checkbox.setSelected(false);
            }
            for(
JCheckBox c checkboxes) {
                if(
checkbox.equals(c))
                
System.out.println("El JCheckBox seleccionado es: "+c.getText());
            }
        }
    };
private List<
IntegergetSelectedCheckBoxes() throws RuntimeException {
    List<
Integerindexes = new ArrayList<>();
    for(
Integer i=0i<checkboxes.size(); i++) {
        if(
checkboxes.get(i).isSelected())
            
indexes.add((i+1));
    }
    if(
indexes.isEmpty())
        throw new 
RuntimeException("No hay checkbox seleccionados");
    return 
indexes;
}

private 
int getIndexOfCheckBox(JCheckBox checkbox) {
    
int index = -1;
    for(
byte i=0i<checkboxes.size(); i++) {
        if(
checkboxes.get(i).equals(checkbox))
            
index i;
    }
    return 
index;

El código del boton es el que genera netbeans cuando lo arrastras, y no se como modificarlo, o donde estoy mal
  #4 (permalink)  
Antiguo 24/03/2015, 22:17
Avatar de Khaooos  
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con jcheckbox

Se duplico la entrada

Última edición por Khaooos; 24/03/2015 a las 22:18 Razón: Se duplico la entrada

Etiquetas: listener
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 16:26.