Diferencias y usos de javax.swing.JList y javax.swing.DefaultListModel

publicado por: Anonymous

He estado haciendo una pequeña aplicación donde estoy utilizando listas y me tope con defaultlistmodel y observando he visto que sólo cambian en la forma de declarar las propiedades.La cuestión es que además de ésta existen otras diferencias en cuanto al uso de cada una, y también como es posible que de una lista de opciones al seleccionar algunas estas se visualicen en otra lista independiente.

solución

Como menciona el compañero en el comentario, una JList es un componente de “peso ligero” (es decir, liviano), que visualmente se muestra y puede ser agregado en algún contenedor (como un JPanel o un JFrame). Un JList y un DefaultListModel son cosas completamente distintas.

Un JList es un componente, y un DefaultListModel es un modelo que puede ser utilizado en ese componente.

Un modelo es la forma en la que vas a organizar tu lista, además que es el que almacena los objetos que agregues (los objetos NO se almacenan en el JList, ellos se almacenan en el modelo que tenga ese componente).

Ahora, el JList trae por defecto un tipo de modelo, y ese modelo es la interfaz ListModel, el cuál incluye ciertos métodos diferentes al DefaultListModel. ¿Por qué?

Esto se debe a que la interfaz ListModel, se utiliza casi únicamente para obtener los valores de una JList, como se indica en la documentación de Java para un ListModel.

Por otro lado, el DefaultListModel es más una clase que te permite realizar más acciones (como agregar, obtener, eliminar, ajustar), según se indica en documentación de Java para un DefaultListModel.

Además de esto, existen otros tipos de modelos que pueden ser utilizados según lo requieras.

Dicho esto, la forma en la que puedes modificar el modelo de un componente JList es por medio del método JList.setModel(tuModelo);, donde “tuModelo” es una instancia del modelo que quieras utilizar. Por ejemplo, si quisieras modificar el modelo de tu JList (un ListModel) por un DefaultListModel, simplemente harías algo así:

DefaultListModel miModelo = new DefaultListModel(); // se instancia el nuevo modelo
// puedes utilizar el método miModelo.add(miObjeto); para agregar objetos al modelo antes ser ajustado al JList
JList.setModel(miModelo); // ajusta el nuevo modelo a tu JList

De esta manera, se cambiará el modelo de tu JList.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *