31/10/2008
10/11/2008
Muchas por compartir tu conocimiento, por el tiempo y el esfuerzo dedicado a crear este tutorial.
jomaverg, muchas gracias por abrirnos los ojos a los que no dominamos Java, a cuestiones que en algunos momentos son auténticos rompecabezas para nosotros. Cuando alguien con ideas claras te acerca su visión de la jugada, dan ganas de seguir adelante aprendiendo.
ecamacho, le agradezco que haya considerado interesante publicar esta noticia. Humildemente le pido haga lo posible para que florezcan pequeños tutoriales como este.
Sabovi
Muy buen tutorial :D
Es un tutoria imprendiscible para el desarrollo de aplicaciones SWING
infoeduardo
Excelente tutorial... me ha aclarado la forma correcta de trabajar con componentes SWING.
Hasta ahora venia teniendo la práctica (no sé si mala) de emplear threads 'normales' para tareas pesadas pero no tenia idea de el uso de la interfaz SwingWorker y su utilidad.
El ejemplo más basico de esto, una barra de progreso que se actualiza mientras ocurre un ciclo de 1 a 100,000.
Saludos!!!
Grios
Te agradezco el tiempo empleado en ordenar estos conocimientos, y después ponerlos al alcance de todos.
Este documento es imprescindible para comenzar a programar en Swing correctamente.
Quien no tenga estos conceptos básicos claros, va "de culo, cuesta abajo y sin freno", si quiere hacer cualquier cosa decente en Swing.
Gracias.
Tengo una duda.
Si hago lo siguiente, ¿esta bien o mal?.
class Ventana extends JFrame implements Runnable
{
public Ventana()
{
}
public void start()
{
}
public void run()
{
}
public static void main(String[] args)
{
Ventana v=new Ventana();
v.start();
v.setVisible(true);
}
}
Saludos.
Hola a todos. Gracias a vosotros, la verdad es que no me esperaba tan buena acogida y me habéis emocionado.
Hola Anónimo. Con la información que proporcionas, creo entender que quieres que tu clase Ventana sea ejecutada en un hilo propio. No lo veo apropiado, ten en cuenta que en el EDT (Event Dispatching Thread) han de realizarse todas las operaciones relacionadas con Swing y las operaciones largas se realizan en el SwingWorker ya que éste prorporciona los mecanismos para compartir automáticamente datos entre los dos hilos.
Por otra parte, dentro de tu planteamiento, aunque implementes Runnable, si mal no recuerdo no hace falta implementar start(), sino que creas un objeto Thread pasándole como parámetro la clase Ventana y ejecutas el método start() sobre ese objeto.
Saludos cordiales.
Bueno, jomaveger, como fui el primero en gradecerte que compartieses tu trabajo, permíeteme que te haga una sugerencia: amplía un poco, con alguna iagen si es posible, la parte de SwingWorker.
Otra sugenrencia, podrías añadir algunos links a herramientas que ayudan a "limpiar"Swin, como estos:
http://www.denova.com/Detangler/
https://swingexplorer.dev.java.net/
Muchas gracias otra vez y un saludo, compañero.
Hola peyrona. Muchas gracias por las sugerencias, las críticas constructivas siempre son bienvenidas. Sobre lo de la imagen, llevas razón, lo estudiaré. Y sobre las herramientas, pues no las conocía y lo cierto es que tienen muy buena pinta.
Gracias de nuevo y un saludo cordial para ti.
Muchas gracias!! Es un tutorial basico para hacer aplicaciones Swing y no morir en el intento.
Y si puedes colgar una version web para que los buscadores lo indexen facil y los aprendices de Swing lo encuentren fácil, mejor. Si los buscadores indexan tambien PDFs, pero por muy ISO que sea ahora, siguen sin gustarme los PDFs donde una página vale :).
Gracias
Gracias, soy el anonimo del codigo de arriba.
Buscando un "backport" a la clase SwingWorker (quería reconstruir el ejemplo para jdk150) encontré el siguiente proyecto:
https://swingworker.dev.java.net/
Y ahí se incluye una demo en mi opinión más eficiente que la del tutorial (mientras se generan los numeros primos se van mostrando, y a la par, actualizando la barra de progreso).
Saludos.
Muchísimas Gracias José María!
Me has ayudado a reforzar conocimientos en una de las dos cosas que mas me agrada del Desarrollo de Software ;)
Saludos cordiales.
Gracias por vuestros comentarios, y tomo nota de vuestras sugerencias.
Saludos cordiales.
Enhorabuena!! me alegro que te hayan publicado el tutorial!;) es todo un detalle por tu parte,y se nota que has tenido que dedicar mucho tiempo para hacer este tutorial!además esta claro que has ayudado a muchas personas con él!me alegro mucho.
Ahora a disfrutar del verano!!:D
la pelirroja:P
Muchas gracias pelirroja :P, no me lo esperaba!!! :D
HOLA, primero que nada agradecerte por el tiempo y esfuerzo que le pones para compartir tu conocimiento; mi nombre es jesus(jesusitotej-upt@yahoo.es) voy aprendiendo java y me parece muy interesante. La idea de multitareas usando hilos(thread) ya la entendí leyendo tu PDF, el asunto es como implementarla.
PREGUNTO:
public void actionPerformed(ActionEvent e) {
1) Esta instruccion captura todos los clicks de todos los botones
existentes en el formulario?
2) Y captura los eventos click de otros controles como spinner, checks, optiongroup...???
3) En el siguiente ejemplo cuales son los errores y que debo modificar para implementar EDT (HDE) segun tu perspectiva.
Es un spinner que cuando cambia su valor, un label te muestra si el número es o no primo.
CODIGO:(NetBeans)
private void spnDatoStateChanged(javax.swing.event.ChangeEvent evt) {
int min=1,max=100,num=0;
num=Integer.parseInt(spnDato.getValue().toString());
// Límites del spinner
if (num if (num>max) spnDato.setValue(100);
// funcion booleana definida previamente para hallar si es primo
if (esprimo(num)){
lblResp.setText("Es Primo");
}else{
lblResp.setText("No es Primo");
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new spinner().setVisible(true);
}
});
}
Escribe tu comentario