Java - Control adecuado?

 
Vista:

Control adecuado?

Publicado por Fernando (12 intervenciones) el 31/08/2003 19:05:47
Hola a todos. Intentaré ser breve y claro a la vez (uf qué difícil....)

Bien, tengo una aplicación que necesita mostrar en torno a 120 datos (strings) en una ventana y para ello uso un JPanel y una JList. Los datos varían poco (apenas hay altas o bajas en la lista) pero la ventana se actualiza cada segundo con un timer. El problema es que me parece que va demasiado lento, tarda mucho por ejemplo en mover la barra de desplazamiento. ¿Estoy usando el control adecuado o debería usar otro? ¿Es un problema de prioridades? ¿Como podría entonces dar más prioridad a la clase que actualiza la lista? ¿Hay algún método para provocar el refresco instantáneo (algo como el DoEvents de Visual Basic)?

De nuevo muchas gracias por vuestro tiempo. Cualquier ayuda será bienvenida

Ciao
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

RE:Control adecuado?

Publicado por Oscar (661 intervenciones) el 31/08/2003 19:56:35
Porque usas un Timer para actualizar la pantalla?
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:Control adecuado?

Publicado por chuidiang (532 intervenciones) el 01/09/2003 09:38:21
Como dice Oscar, salvo que tengas un motivo específico, no es necesario que pongas un timer para actualizar la pantalla.

El JList, bien a través del constructor, bien a traves del método setModel(), admite un ListModel (Una lista de datos). Java te proporciona una clase que Implementa ListModel, el DefaultListModel.

Si metes un DefaultListModel (o cualquier otra clase que implemente ListModel), la actualización se hace automáticamente. En cuanto metas, borres o modifiques un elemento del DefaultListModel, el JList se actualiza solo.

Si a pesar de todo necesitas el timer, puede estar pasándote una cosa. En java cuando arrancas una aplicación con ventanas, se crean automáticamente tres procesos: el del main, el de awt (encargado de los eventos y refrescos de pantalla) y el recolector de basura. No se como haces el timer, pero si estas poniendo una especie de sleep (Thread.sleep() o similar) que deja dormido al hilo, y casualmente lanzas el sleep en el hilo de awt, se te quedará todo "colgado".

Prueba, justo antes del timer, a poner un
System.out.println (Thread.getName());
Si el nombre del Thread que obtienes es algo de awt, entonces ya sabes por qué se te queda colgado.

Claro, que a lo mejor estas usando javax.swing.Timer, con lo que todo esto que te he dicho no vale para nada...

Se bueno.
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:Control adecuado?

Publicado por Fernando (12 intervenciones) el 01/09/2003 16:21:39
Quizá me exliqué mal. El timer sólo actualiza el Jlist (vamos, la lista que hice con DefaultListModel). El problema es que va leeeeennto por ejemplo cuando deplazas la barra lateral (y ejecuto en un Athlon 900 Mhz con 384 de RAM y Red Hat 7.2).
En cualquier caso ¿cómo puedo dar más prioridad a la ejecución de un objeto sobre los otros?

Gracias
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:Control adecuado?

Publicado por chuidiang (532 intervenciones) el 01/09/2003 17:24:59
Puedes dar mas prioridad a los Threads, no a los objetos.

Thread.getCurrentThread() te da el thread en el que estás corriendo en ese momento.

thread.setPriority(int) te fija la prioridad. El argumento int puede ser Thread.MAX_PRIORITY, Thread.MIN_PRIORITY, Thread.NORM_PRIORITY o un numero entero cualquiera entre la maxima y la minima.

Se bueno.
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

Gracias

Publicado por Fernando (12 intervenciones) el 02/09/2003 16:17:30
Muchas gracias por todas vuestras respuestas

Saludos para todos
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