valor seleccionado saber propiedades obtener esta ejemplos como codigo java swing jframe jcheckbox

seleccionado - propiedades de jcheckbox en java



¿Cómo se cuenta el número de JCheckboxes marcado? (4)

Mi propuesta (tal vez no la mejor) es mantener todo CheckBox marcado en una lista.

Así que para el oyente para todos JCheckBoxex será así:

void stateChanged(ChangeEvent e){ if( CheckBox is checked){ // add the checkbox in the list. } else { // remove CheckBox in the list. } }

Para saber cuántas checkBox están marcadas, simplemente cuente el tamaño de la lista.

Saludos.

Tengo 11 casillas de verificación diferentes en mi JFrame y quiero poder obtener un número cada vez que se marca uno para saber cuántos totales se marcan. Sé cómo configurar un ItemListener y ver si uno está marcado, pero no estoy seguro de cómo puedo verificarlos todos.

EDITAR:

cblist es una ArrayList que contiene 11 JCheckBoxes. Le di a cada JCheckBox un detector de elementos y aquí está la clase utilizada cuando se hace clic en las casillas de verificación ...

private class CheckClass implements ItemListener{ public void itemStateChanged(ItemEvent event){ for(cblist.isChecked){ ingnum++; } } }

En el ciclo for, ¿cómo puedo probar todos los elementos de ArrayList? Entiendo que mi sintaxis no es correcta en este momento.


Una forma: ponga todas las JCheckBoxes en una matriz o ArrayList<JCheckBox> y cuando lo desee, simplemente repita la lista para ver qué casillas de verificación están seleccionadas.

Otra posible solución: si tiene una estructura tabular, use una JTable que contenga booleanos en su modelo, luego, cuando lo desee, repita las filas de TableModel para ver qué filas contienen valores Boolean.TRUE.


agregue el detector de eventos "ActionPerformed" para todas sus casillas de verificación y llame a este método dentro del método del controlador de eventos para obtener la cantidad de casillas marcadas:

int countCheckedCheckBoxes(){ Component[] cs = getRootPane().getComponents(); int checkNums = 0; for(Component c : cs){ if(c instanceof JCheckBox){ if(((JCheckBox)c).isSelected()){ checkNums++; } } } return checkNums; }

getRootPane debe devolver su panel principal cuyos componentes están ubicados en él.


puede mantener un countChecked contador global countChecked y hacer que el marco implements ItemListener

para todos los JCheckBox en su marco chkBox.addItemListener(this) y manejar los eventos

public class MyFrame extends JFrame implements ItemListener{ private int countChecked = 0; private JPanel contentPane; public MyFrame() { contentPane = new JPanel(); setContentPane(contentPane); JCheckBox chckbx = new JCheckBox("New check box"); contentPane.add(chckbx, BorderLayout.CENTER); chckbx.addItemListener(this); } @Override public void itemStateChanged(ItemEvent ie) { if(ie.getSource().getClass() == JCheckBox.class) { if(ie.getStateChange() == ie.SELECTED) countChecked++; else if(ie.getStateChange() == ie.DESELECTED) countChecked--; } } }