2009-11-04 8 views
6

Tengo un componente. La información sobre herramientas del componente se establece mediante el método setToolTipText(). En el primer monitor todo funciona bien. Ahora cuando muevo el marco al segundo monitor, las informaciones sobre herramientas se muestran en el borde del monitor (en el lateral del primer monitor). Esto sucede solo con la información sobre herramientas de este componente. El problema también aparece en otras máquinas. Sin embargo, solo lo he probado con Vista.La información sobre herramientas en el segundo monitor se muestra en el borde del monitor

¿Por qué es esto? ¿Esto es un error en Swing? ¿Cómo puedo solucionarlo?

La información sobre herramientas depende de la ubicación del cursor del mouse. Por lo tanto, puedo editar el código y anular el método getToolTipText (MouseEvent e). Sería realmente bueno saber cuál es la razón de este problema antes de comenzar a cambiar el código.

Gracias de antemano.

Respuesta

7

Hay varios errores en la base de datos de errores de Java que parecen estar relacionados con esto, p.

Tooltip issue when using dual monitor (dual head) configuration.

JToolTip in JApplet will place tooltip in wrong monitor

Problem with Action button tooltips with some multiple monitor configurations

En está cerrado como duplicado de otro, uno afirma ser fijo y otro tiene conjunto fijar-entendido.

Una solución Publicado por algún usuario es

frame.pack(); 
frame.setLocation(location); 
frame.setLocation(new Point(0, 0)); 
frame.setLocation(location); 

kieron.wilkinson

La razón por la que esto funciona es que setLocation() finalmente Calles Component.reshape() que a su vez llama a un método llamado Component.notifyNewBounds(boolean resized, boolean moved), que atraviesa la jerarquía de componentes configurando los límites de cada componente. Por por defecto esto se hace "flojo" pero no están configurados antes de que se mueva la ventana . El código anterior los obliga a a establecerse.

Esta es también la razón por la que la información sobre herramientas comienza a funcionar correctamente después de arrastrar la ventana de una pantalla a otra.

+0

Gracias, creo que tuviste algo de trabajo para investigar esto. Traté de cambiar el código a getToolTipText, que funciona bien después de las primeras pruebas. –

+0

Bueno, un par de búsquedas en Google y leyendo los tres informes de errores + publicaciones en ellos. Luego escribiendo la respuesta. No hay problema – jitter

Cuestiones relacionadas