Uso básico de elementos Swing con NetBeans – 21 – Uso de JList. Ejemplo 2.

En este ejemplo, a diferencia de la anterior modificaremos ciertas propiedades de la lista para que se ordene de forma horizontal y la posibilidad de seleccionar más de un elemento de la lista. Si ya realizaron en el ejemplo 1, podrán modificar solamente ciertas partes del código anterior.

Diseñamos un formulario utilizando un JFrame (Nombre del formulario UsoJList). Agregamos a nuestro formulario un JList junto con dos botones de comando para agregar y eliminar datos y un campo de texto para ingresar datos. En la imagen siguiente vemos el diseño de nuestro formulario, cada elemento tiene un nombre de variable como se especifica en la imagen, tomar en cuenta este punto ya que es necesario para referenciar los objetos. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”. (clic sobre la imagen para ampliar)

Lista de las importaciones que debemos de tener para utilizar ciertos elementos en nuestro formulario. Agregamos algunas líneas de código en el constructo del JFrame que se explican con comentarios.

Códigos utilizados en el constructor e importaciones.

Código Java
package com.swing.basic;//Paquete de fuentes

import javax.swing.DefaultListModel;//Lista de importaciones
import javax.swing.ImageIcon;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;

/**
*
* @author ECS
*/

public class UsoJList extends javax.swing.JFrame {

/**
* Creates new form UsoJList
*/

public UsoJList() {
initComponents();
setLocationRelativeTo(null);//Centrar el formulario
setTitle("Uso de JList.");
//Icono personalizado para el formulario
setIconImage(createImageIcon("/com/swing/basic/img/Login.png").getImage());
//Método de arranque.
inicio();
}
private DefaultListModel modelList;//Variable de clase.

Creamos los métodos siguiente en modo fuente, los métodos creados por nosotros las ubicamos al final de la declaración de variables, justo antes de la llave de cierre general. Se agregan comentario para aclarar la función de cada línea de código.

Código Java
    private void inicio(){
//Array de String para agregar al JList
//Si trabajamos con base de datos, puede ser un ArrayList
String nom[] = {"Java","PHP","C++","Basic","Bash","C#","Delphi","FoxPro","JavaScript",
"MATLAB","Objective-C","Python","Perl","Ruby","Visual Basic"};
//DefaultListModel para manejar las lista.
modelList = new DefaultListModel();
//Agregamos datos a la lista utilizando for
for (String string : nom) {
modelList.addElement(string);
}
//Establecemos algunas propiedades de la lista
//Establecemos el modelo, nos permite agregar y eliminar elementos, etc.
jL.setModel(modelList);
//Intervalo de selección
jL.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
jL.setSelectedIndex(0);
jL.setVisibleRowCount(-1);
//Distribución horizontal
jL.setLayoutOrientation(JList.HORIZONTAL_WRAP);
}

private void eliminar(){
//Método para eliminar elementos de la lista
//Se optiene el índice del los elementos a eliminar
//Los índices se almacenan en un array
int[] selectedIndices = jL.getSelectedIndices();
//Comprobamos que el array no este vacío
if(selectedIndices.length > 0){
//Recorremos el array en orden inverso.
for (int i = selectedIndices.length - 1; i >= 0; i--) {
//Se elimina cada {indice
modelList.remove(selectedIndices[i]);
}
}
else{
JOptionPane.showMessageDialog(null, "Selecciona los elementos a eliminar.");
}

}

private void agregar(){
//Método para agregar elementos a la lista
//Comprobamos que el campo de datos no este vacio
if(nomText.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "Campo vacio.");
}
else{
//Utilizando el método enLista, comprobamos que no se repitan los datos.
if(enLista(nomText.getText())){
JOptionPane.showMessageDialog(null, "Nombre repetido..");
}
//Agregamos elemento y limpiamos campo.
else{
modelList.addElement(nomText.getText());
nomText.setText(null);
}
}
}

//Método para comprobar datos repetidos
protected boolean enLista(String name) {
return modelList.contains(name);
}

//Método para obtener un archivo de imagen
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL;
imgURL = UsoJRadioButton.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Archivo no encontrado: " + path);
return null;
}
}

El paso siguiente es establece eventos para los botones, esto les dará la funcionalidad que necesitamos. El evento que normalmente se utiliza para este tipo de elementos es el ActionPerformed. Si ya vieron alguna guía anterior a esta podrán saber cómo se agrega un evento, la ubicación habitual tanto para la lista de eventos, como también los métodos que hayamos creado al igual de la forma en que se implementan estos eventos y llamadas a métodos.

Código Java
    private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {                                         
eliminar();
}

private void agregarActionPerformed(java.awt.event.ActionEvent evt) {
agregar();
}

Llegado a esta parte podremos ejecutar nuestro formulario. (Por si hay alguna duda en el proceso, debemos hacer clic derecho sobre nuestro archivo fuente y presionar “ejecutar archivo” ya que nuestro proyecto no tiene una clase principal definida)

No hay comentarios :

Publicar un comentario en la entrada