Uso básico de elementos Swing con NetBeans – 20 – Uso de JList. Ejemplo 1.

Manejo básico de JList en Java

JList es uno de los tantos elementos que nos pueden facilitar ordenar y visualizar datos en un formulario, es esta oportunidad veremos cómo agregar, eliminar y verificar repetición de datos dentro de la lista.

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.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[] = {"Ariel","Luís","Ana","Juan","Arnaldo","María","Perla"};
//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
jL.setModel(modelList);
jL.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jL.setSelectedIndex(0);
jL.setVisibleRowCount(7);
}

private void eliminar(){
//Método para eliminar elementos de la lista
//Se optiene el índice del elemento seleccionado
int selectedIndex = jL.getSelectedIndex();
//Si selectedIndex es igual a -1, no hay elemento seleccionado
if(selectedIndex != -1){
modelList.remove(selectedIndex);
}
else{
JOptionPane.showMessageDialog(null, "Seleccione un elemento de la lista.");
}
}

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)

7 comentarios :

  1. Respuestas
    1. Que tal. Ve al inicio de la página, el apartado siguiente te puede servir como ejemplo para ordenar diferentes tipos de elementos de una lista. Saudos: Java + Swing 019. Modo diseño en NetBeans. Utilizando la clase Comparator con Collections.sort() para ordenar “List”.

      Eliminar
  2. una pregunta como podria seleccionar un elemento de la lista y cambiar sus datos :( es decir un Set ?

    ResponderEliminar
  3. una pregunta como podria seleccionar un elemento de la lista y cambiar sus datos :( es decir un Set ?

    ResponderEliminar
    Respuestas
    1. Que tal. Los elementos son de un un ArrayList que se utiliza para llenar una lista. Para utilizar los Setters y Getters seria más apropiado trabajar con clases. Saludos.

      Eliminar