Crear un checkBox Dinámico y el evento keyPress en java
Tags: java, eclipse, jcheckbox, programming
Published: 2023-04-30 15:12:26

En Java, un JCheckBox es un componente gráfico que permite al usuario seleccionar una o más opciones de una lista. Un JCheckBox dinámico es una casilla de verificación que se crea mediante programación en tiempo de ejecución, en lugar de codificarse en el programa.

La creación de un JCheckBox dinámico es útil cuando necesita generar casillas de verificación basadas en una lista dinámica de datos, como una lista de opciones que puede cambiar con el tiempo o que está determinada por la entrada del usuario. Al generar componentes JCheckBox dinámicamente, puede crear una interfaz según los requisitos del usuario.

Para crear componentes JCheckBox dinámicos en Java, puede usar un bucle para iterar sobre una lista de datos, como una ArrayList o una matriz, y crear un nuevo objeto JCheckBox para cada elemento de la lista.
```java
public void CreateCheckBox() {
		for (int i = 0; i < array.length; i++) {
			int resi=(i==3?(i+2):(i + 1));//Condition if
			texto=new JLabel("[ F"+resi+ " ] ");//create label dynamic
			texto.setBounds( 7, i*50+10, 150, 30);//position label dynamic
			for (int j = 0; j < array[i].length; j++) {//create JCheckBox dynamic
				box = new JCheckBox(array[i][j]);
				String array2 = array[i][0];
				box.setName(array2);
				box.setBackground(Color.white);
			}
			Panel.add(texto);
			pnlDatos.add(box);
			pnlDatos.revalidate();
		}
	}
```
Además, puede establecer propiedades en los objetos JCheckBox, como la etiqueta de texto, el estado seleccionado según los eventos del teclado.
Mediante los eventos permitir que el usuario interactúe con la aplicación mediante atajos de teclado o teclas de acceso rápido.

Para seleccionar una lista se crea el evento keyPress, dicho evento contiene información sobre la tecla que se presionó, como su código de tecla. Esta información se puede usar para determinar qué tecla se presionó y cómo debe responder la aplicación al evento.
``` java
public void keyPress(String turno) {

		int component = pnlDatos.getComponentCount();
		for (int i = 0; i < component; i++) {
			String name = (String) pnlDatos.getComponent(i).getClass().getName();
			JCheckBox nameCheckBox = (JCheckBox) pnlDatos.getComponent(i);
			if (name == "javax.swing.JCheckBox" && nameCheckBox.getName().equalsIgnoreCase(turno)) {
				boolean check = nameCheckBox.isSelected();
				if (check) {
					nameCheckBox.setSelected(false);
					String str = vgetcheckData.replace(nameCheckBox.getName() + ";", "");
					vgetcheckData = str;
				} else {
					nameCheckBox.setSelected(true);
					vgetcheckData = vgetcheckData + nameCheckBox.getName() + ";";
				}
			}
		}
	}
}
```
Para manejar un evento keyPress en Java, puede usar un detector de eventos, como KeyListener, para registrar el evento y proporcionar un método de devolución de llamada para manejar el evento. 
```java
public void keyPressed_(KeyEvent ke) {
		if (ke.getKeyCode() == KeyEvent.VK_F1) {
			keyPress("4");
		}else if (ke.getKeyCode() == KeyEvent.VK_F2) {
			keyPress("5");
		}else if (ke.getKeyCode() == KeyEvent.VK_F3) {
			keyPress("6");
		}else if (ke.getKeyCode() == KeyEvent.VK_F5) {
			keyPress("7");
		}else if (ke.getKeyCode() == KeyEvent.VK_F11) {
			textfield1.setText(vgetcheckData+"\n");
		}
	}
```
Los eventos F1, F2, F3 y F5 marca la casilla según los teclados seleccionados.
El evento F11 realiza el proceso de obtener el valor de cada casilla y lo muestra en la caja de texto 

**Resultado**
![Image description CheckBox Dynamic - keyPress](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7pq2k7n26no99vragr9z.png)

**Conclusión**
En conclusión, combinar los eventos JCheckBox y keyPress en Java le permite crear una interfaz de usuario dinámica que puede responder tanto a la entrada del usuario como a los eventos del teclado. Al usar un KeyListener para manejar los eventos del teclado y actualizar el estado seleccionado de los componentes de JCheckBox en consecuencia, puede crear una interfaz de usuario flexible que pueda adaptarse a los requisitos cambiantes del usuario.
En general, al combinar estas dos funciones, puede crear un programa más versátil y fácil de usar que pueda satisfacer mejor las necesidades de sus usuarios.

**Descargar proyecto**

{% embed https://github.com/RUPHACOD/CheckBoxDynamic_.git %}

**Bibliografía**

- https://coderanch.com/t/345949/java/create-dynamic-checkboxes

- 
http://www.java2s.com/Tutorials/Java/Swing_How_to/JScollPane/Dynamically_create_JCheckBox_and_add_to_a_JScrollPane.htm