Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 18 Enero 2010, 22:01 pm



Título: Ventanita estilo JS emergente
Publicado por: Debci en 18 Enero 2010, 22:01 pm
Hola a todos, me gustaria saber como poner esas ventanitas emergente tan modernas que siguen al mouse, que ponen en paginas web "sofisticadas" (si sofisticadas...) que pasas el ratón encima de un link y te aparece una ventanita informativa cerca del mouse y se va cuando sales del enlace.
He pensado hacerlo con el motor de scripting rhino pero no veo la manera puesto que es javascript a java, y no se como hacerlo de manera equitativa y constructiva (definitivamente soy un chaquetero...) me refiero a poder ponerle una imagen diseñarlo y tal que no se un simple contextMenu descriptivo de java, si no con imagenes y eso.

Alguna idea?

Parto de 0.

Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: Blitzkrieg' en 18 Enero 2010, 22:22 pm
No se a cual te refieres, Screenshot de un ejemplo.


Título: Re: Ventanita estilo JS emergente
Publicado por: Debci en 18 Enero 2010, 22:37 pm
Ahora mismo no encuentro ninguna, pero em refiero a como una frame sin botoncitos de cerrar ni abrir, que contenga nomas que texto o imagenes y se abra al pasar el mouse por encima, como la ventanita de tooltip text pero mas avaznada, con imagenes y formateada.
He pensado en hacerlo con un jframe capado de la capacidad de tener botones de cerrar miniminazr y eso.

Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: Leyer en 18 Enero 2010, 23:07 pm
un JtoolTip tan personalizado creo que no se puede pero se me ocurre que uses un JPopupMenu con un listerner de focus al componente x

Salu2


Título: Re: Ventanita estilo JS emergente
Publicado por: Blitzkrieg' en 18 Enero 2010, 23:44 pm
Ahora mismo no encuentro ninguna, pero me refiero a como una frame sin botoncitos de cerrar ni abrir, que contenga nomas que texto o imagenes y se abra al pasar el mouse por encima, como la ventanita de tooltip text pero mas avaznada, con imagenes y formateada.
He pensado en hacerlo con un jframe capado de la capacidad de tener botones de cerrar miniminazr y eso.

Saludos

Es recomendable que tu aplicación solo tenga un JFrame. Mejor hazlo con JDialog.

Para hacer un JFrame sin bordes creo que es asi:

Código
  1. frame.setUndecorated(true);

No se si tambien ande con JDialog, prueba y me dices.


Título: Re: Ventanita estilo JS emergente
Publicado por: egyware en 19 Enero 2010, 01:49 am
Jajajaj que trivial perdón no me rio de tí si no de los post anteriores
(ando malo hoy perdón)
Como recomendación
Usa un JDialog sin bordes
Usa el listener del mouse asi sabras calculando un delta dirección del mouse en MouseMotion cuanto debes mover el Dialog
Como es un Dialog modificalo a tu pinta
Con respecto a Rhino hay no se podrias usar jQuery pero jQuery esta orientado a browser y Rhino es un interprete de javascript que no tiene nada que ver con Browser
Y eso buscare el codigo de algo que hice era parecido a los gadget de windows no estaba completo pero tiene lo que quieres.
Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: Debci en 19 Enero 2010, 22:39 pm
Gracias a todos, lo de listener no bastaria con un evento del mouseEntered de el elemento donde quier que salga y con un setBounds() y cojer la psoicion del mouse con robot para ponerlo dodne yo quiero.

Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: egyware en 19 Enero 2010, 23:15 pm
No necesitas el Robot para dejar el mouse donde tu quieres, solo calcula el delta direccion del mouse y mueve esa dirección el JDialog si no entiendes que es un delta es una diferencia entre el punto final menos el inicial
Ejemplo
int dx,dy;
Point puntoInicialMouse;
Point puntoFinalMouse;
Point posicionDialog;
JDialog dialog;
posicionDialog = dialog.getLocation();
dx =  puntoFinalMouse.x-puntoInicialMouse.x;
dy =  puntoFinalMouse.y-puntoInicialMouse.y;
dialog.setLocation(posicionDialog.x+dx,posicionDialog.y+dy);

Mas o menos asi
saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: Debci en 20 Enero 2010, 15:14 pm
No necesitas el Robot para dejar el mouse donde tu quieres, solo calcula el delta direccion del mouse y mueve esa dirección el JDialog si no entiendes que es un delta es una diferencia entre el punto final menos el inicial
Ejemplo
int dx,dy;
Point puntoInicialMouse;
Point puntoFinalMouse;
Point posicionDialog;
JDialog dialog;
posicionDialog = dialog.getLocation();
dx =  puntoFinalMouse.x-puntoInicialMouse.x;
dy =  puntoFinalMouse.y-puntoInicialMouse.y;
dialog.setLocation(posicionDialog.x+dx,posicionDialog.y+dy);

Mas o menos asi
saludos
Y como recojo la posicion del mouse? con point y ya esta?

Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: egyware en 20 Enero 2010, 17:52 pm
Implementa la interface MouseMotionListener y agrega el listener al componente y se te agregara dos funciones. Bueno con mouseMoved(MouseEvent e)  sabras en cada momento donde esta el mouse.
Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: Debci en 20 Enero 2010, 21:31 pm
Haber si em ha quedado claro, improvisando codigo (lo escribo aqui mismo sin probar):

Código
  1. public class DetecionDeRaton implements MouseMotionListener
  2. public void mouseMoved(MouseEvent e) {
  3.       System.out.println("Se ha movido el ratón a la posición " + e.getX() + "," + e.getY());
  4.    }
  5.  
  6.  
A eso te refieres? y con eso ir moviendo el panel? dandole las coordenadas recividas.

Saludos


Título: Re: Ventanita estilo JS emergente
Publicado por: egyware en 20 Enero 2010, 23:10 pm
Claro asi es, recuerda agregar el Listener al Panel.
Vamos deduce el Algoritmo de queda poco.


Título: Re: Ventanita estilo JS emergente
Publicado por: Blitzkrieg' en 21 Enero 2010, 16:35 pm
No he podido encontrar una pagina web que implemente eso que debci quiere hacer...


Título: Re: Ventanita estilo JS emergente
Publicado por: Debci en 21 Enero 2010, 18:01 pm
Claro asi es, recuerda agregar el Listener al Panel.
Vamos deduce el Algoritmo de queda poco.
Es facil eso, solo que no sabia si hacerlo con jpanel o jpopup como me comentó ddk de manera privada.

Saludos