Java - Problema JList

 
Vista:

Problema JList

Publicado por Fernando (12 intervenciones) el 24/09/2003 13:39:24
Estoy utilizando un componente JList construido a partir de una DefaultListModel.
En ella tengo que mostrar unos identificadores numéricos seguido de un texto.
Si solo muestro los números, la lista los muestra correctamente y si añado un
elemento al DefaultListModel, el JList reacciona añadiéndolo al final de la lista.

Sin embargo, cuando concateno el número con el texto que quiero mostrar, los
elementos de la DefaultListModel salen cada vez en una posición (algo molesto ya
que tengo un evento doble click en la lista y a veces no pincho donde quiero)

Ej: Cuando tengo números solo:

205
125
32
321

Y actualización tras actualización, siempre deja este orden, si ahora añado 225, se
incluiría debajo del 321. Cuando añado texto pasa algo como esto:

205 texto1
125 texto2
32 texto3
321 texto4

y al volver a actualizar:

205 texto1
321 texto4
32 texto3
125 texto2

y luego otro orden distinto.

Estoy seguro de que los elementos en el DefaultListModel no varrían su posición,
por eso pienso que a lo mejor se me está escapando alguna propiedad de la JList,
pero no estoy seguro

¿Alguien puede ayudarme?

Desde ya, gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Problema JList

Publicado por Yamil Bracho. (2315 intervenciones) el 24/09/2003 16:35:01
Un List es una coleccion ordenada asi que agregas un elemento y este es ordenado dentro de la secuencia normal de la lista (por eso a las listas tambien se les llama secuencias). Necesitas que al agregar un elemento proveer un metodo para ordenarla a tu manera.

Este codigo lo tenia por alli guardarlo, nunca lo he usado, pruebalo y me dices
import java.text.Collator;

void sortList(JList list)
{
ListModel model = list.getModel();
int numItems = model.getSize();
String[] a = new String[numItems];
for (int i=0;i<numItems;i++)
{
a[i] = (String)model.getElementAt(i);
}
sortArray(a);
list.setListData(a);
list.revalidate();
}
void sortArray(String[] strArray)
{
if (strArray.length == 1) // no need to sort one item
return;
Collator collator = Collator.getInstance();
String strTemp;
for (int i=0;i<strArray.length;i++)
{
for (int j=i+1;j<strArray.length;j++)
{
if (collator.compare(strArray[i], strArray[j]) > 0)
{
strTemp = strArray[i];
strArray[i] = strArray[j];
strArray[j] = strTemp;
}
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema JList

Publicado por fernando (12 intervenciones) el 25/09/2003 13:47:18

Gracias, lo probaré

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar