Ordenar JList

1,501 views
Skip to first unread message

Joyal

unread,
Aug 25, 2006, 9:45:35 AM8/25/06
to JavaSOS
Hola que tal, mi pregunta es la siguiente, es posible ordenar los items
de un JList?, mi caso es el siguiente, tengo una serie de items en un
jlist, pero quiero que cuando se agregue un item, el JList se ordene
por orden alfabetico.. no se si ya existira alguna clase que haga esto
o de que forma se pueda hacer...


salu2
Joyal

Jose Mora Fallas

unread,
Aug 25, 2006, 10:13:24 AM8/25/06
to jav...@googlegroups.com
Revisa esta dirección, aquí puedes encontrar ayuda
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JList.html


2006/8/25, Joyal <dhgo...@gmail.com>
Jose Manuel Mora Fallas
www.acto.go.cr

José Eduardo Razo Fabre

unread,
Aug 25, 2006, 10:26:03 AM8/25/06
to jav...@googlegroups.com
Si es Posible te mando un ejemplo:
 

import javax.swing.*;
import java.util.*;

/**
* Clase que implementa el Modelo de JList para elementos ordenados.
* @author JERF
* @version 1.0
* @see javax.swing.AbstractListModel
*/
public class OrdListModel extends AbstractListModel {
    private SortedSet modelo;

    /**
    * Constructor del Modelo
    */
    public OrdListModel() {
        modelo = new TreeSet();
    }

    /**
     * Metodo para obtener el total de elementos
     * @return Total de elementos o 0 en su defecto
     */
    public int getSize() {
        return modelo.size();
    }

    /**
     * Metodo que regresa el objeto contenido en el indice indicado
     * @param i indice a revisar
     * @return Objecto contenido en el indice o null en su defecto
     */
    public Object getElementAt(int i) {
        return modelo.toArray()[i];
    }

    /**
     * Metodo que agrega un objeto a la lista ordenada
     * @param o Objeto que se agregara
     */
    public void add(Object o) {
        if(modelo.add(o))
            fireContentsChanged(this, 0, getSize());
    }

    /**
     * Metodo que agrega todo un arreglo a la lista
     * @param o Arreglo a agregar
     */
    public void addAll(Object o[]) {
        Collection c = Arrays.asList(o);
        modelo.addAll (c);
        fireContentsChanged(this, 0, getSize());
    }

    /**
     * Metodo que limpia la lista
     */
    public void clear() {
        modelo.clear();
        fireContentsChanged(this, 0, getSize());
    }

    /**
     * Metodo que dice si se contiene o no un objeto indicado en la lista
     * @param o Objeto a buscar
     * @return true en caso de encontrarlo o false en su defecto
     */
    public boolean contains(Object o) {
        return modelo.contains(o);
    }

    /**
     * Metodo que retorna el primer objeto de la lista
     * @return Objeto en el tope de la lista
     */
    public Object first() {
        return modelo.first();
    }

    /**
     * Metodo que retorna el ?ltimo elemento de la lista
     * @return Objeto en el final de la lista
     */
    public Object last() {
        return modelo.last();
    }

    /**
     * Metodo que retorna el iterator correspondiente a la lista
     * @return Iterator correspondiente a la lista
     * @see java.util.Iterator
     */
    public Iterator iterator() {
        return modelo.iterator();
    }

    /**
     * Metodo que quita un objeto de la lista
     * @param o Objeto a borrar
     * @return true si fue removido o false en su defecto
     */
    public boolean removeElement(Object o) {
        boolean r = modelo.remove(o);
        if(r)
            fireContentsChanged(this, 0, getSize());
        return r;
    }

    /**
     * Metodo que retorna el contenido de la lista como un arreglo
     * @return Arreglo de Objetos de la lista
     */
    public Object[] elements() {
        return modelo.toArray();
    }

    /**
     * Metodo que retorna el contenido de la lista como un arreglo
     * @return Arreglo de Objetos de la lista
     */
    public Object[] toArray() {
        return elements();
    }
}

y en el programa GUI:
....
        m2=new OrdListModel();
        cursos=new JList(m1);
        m1.addAll(vc.toArray());
....
vc es un Vector, pero puede ser un array (o bien puedes ir agregando items por separado (checa los metodos en OrdListModel).

 
2006/8/25, Joyal <dhgo...@gmail.com>:



--
-----------------------------------------------------
LSC. José Eduardo Razo Fabre, MSC
lalo...@gmail.com
JERFSoft (c)
Tel: +52 (222) 2432779
Cel: +52 (222) 4256305
ICQ: 110975687
AIM: goldenhawkr
YIM: jerfmx
MSN: imperi...@hotmail.com
Linux User: 356663

Joyal

unread,
Aug 25, 2006, 3:11:04 PM8/25/06
to JavaSOS
vaya, me funciono de maravilla, justamente lo que necesitaba muchas
gracias a todos :) ,

"Martín A. Rodriguez"

unread,
Sep 4, 2006, 10:50:16 PM9/4/06
to jav...@googlegroups.com
Hola, estoy utilizando este modelo para ordenar un Jlist alfabeticamente en forma ascendente o sea de la "a" a la "z"
lo que me haría falta es un método que me permita agregar alfabeticamente pero en forma descendiente.
Gracias José Eduardo esta clase me sirvió mucho.

Martín



José Eduardo Razo Fabre escribió:
Reply all
Reply to author
Forward
0 new messages