JList

From ChuWiki
Jump to navigation Jump to search

Uso básico del JList[edit]

La forma más sencilla de usar un JList usando toda su funcionalidad, es usar el DefaultListModel. Este DefaultListModel se puede pasar al JList bien en el constructor, bien usando el método setModel(). Ver en el siguiente ejemplo

DefaultListModel modelo = new DefaultListModel();

// Se puede hacer esto:
JList lista = new JList(modelo);

// o bien esto:
JList lista = new JList();
lista.setModel(modelo);

//O bien, directamente:
JList lista = new JList(new DefaultListModel());

Java se encarga, a partir de este momento, de que todos los cambios realizados en "modelo", se reflejen en el JList

Así que, realizando llamadas como las siguientes, el JList se actualiza automáticamente.

modelo.clear();   // para borrar toda la lista
modelo.addElement("un item");   // para añadir un item a la lista
modelo.removeElement(0);   // Borra el item de la posición 0

Saber sobre qué fila de JList se ha hecho click[edit]

Para saber sobre qué fila se ha hecho click, basta con usar el método locationToIndex(Point) de JList. El código para ver el elemento sobre el que se hace doble click sería como este

JList list = new JList(dataModel);
...
MouseListener mouseListener = new MouseAdapter() 
{
    public void mouseClicked(MouseEvent e) 
    {
        if (e.getClickCount() == 2) // Se mira si es doble click
        {
            int posicion = list.locationToIndex(e.getPoint());
            System.out.println("La posicion es " + posicion);
         }
    }
};
 list.addMouseListener(mouseListener);

Una vez que se tiene el indice, debería ser fácil obtener el elemento, bien a través del listModel.getElementAt(), bien a través de list.getModel().getElementAt().


Alinear las celdas de un JList[edit]

Para darle a los items de la JList un alineamiento específico se debe de crear un objeto de tipo UIResource, ésta propiedad permite darle esa característica a todas las celdas de la JList:

JList list = new JList();
UIResource posicion = new UIResource();
 
//se alinean las celdas a la izquierda
posicion.setHorizontalAlignment(SwingConstants.RIGHT);
 
lista.setCellRenderer(posicion);

Las constantes de posición son: LEFT, RIGHT y CENTER

Enlaces[edit]