2012-02-22 60 views
8

¿Alguien me puede decir una forma breve de eliminar los elementos seleccionados de mi JList?Eliminar elemento seleccionado de JList

He buscado en google y aquí, pero encontré muchas maneras. ¿Qué camino debo usar?

+1

Obtiene el modelo de JList (que probablemente sea un objeto [DefaultListModel] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html)) y elimine el objeto seleccionado elemento del modelo a través de su método 'removeElement (Object obj)'. –

+3

Consulte el Java [Swing tutorial] estándar (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable) sobre este tema – DNA

+1

@JoopEggen: No soy el votante a la baja si eso es lo que estás preguntando, pero no estoy de acuerdo contigo en que creo que hay una respuesta simple. Usted obtiene el objeto seleccionado de la Lista J (no del índice), y si no es nulo, llama al método de eliminación de un modelo que toma un objeto: 'removeElement (obj)'. –

Respuesta

23

Como dijo @Andreas_D, el centro de datos más abstracto, ListModel es la solución. Esto puede ser un DefaultListModel. Debe establecer explícitamente el modelo en la Lista J. Así (gracias al comentario de @kleopatra):

DefaultListModel model = (DefaultListModel) jlist.getModel(); 
int selectedIndex = jlist.getSelectedIndex(); 
if (selectedIndex != -1) { 
    model.remove(selectedIndex); 
} 

Hay varios métodos en remove... DefaultListModel. Por cierto, esta es una buena pregunta, ya que no hay una solución inmediata en la API (ListModel).

+1

No obtendría el índice, sino el elemento seleccionado, y luego llamar al método removeElement del modelo que toma un parámetro Object. –

+2

estuvo de acuerdo: ListModel es la más mínima de todas las interfaces de colección de vistas (ni mutable ni modificable), pero ese no es el problema de OP: declara haber leído el capítulo del tutorial (que muestra la misma muestra que aquí - menos el cheque para ser seleccionado) Cuidado: el modelo predeterminado de una JList es _no_ un DefaultListModel, usted tiene que establecerlo explícitamente. – kleopatra

3

El componente JList está respaldado por un modelo de lista. Por lo tanto, la única forma recomendada para eliminar un elemento de la lista es eliminarlo del modelo (y actualizar la vista).

+0

si usa un DefaultListModel (y con toda probabilidad lo es), entonces no hay necesidad de actualizar la vista ya que esto debería hacerse automáticamente. –

+0

Esta fue una respuesta más o menos general a una pregunta general. –

Cuestiones relacionadas