2009-11-04 17 views
6

Ho un componente. La descrizione comando del componente è impostata dal metodo setToolTipText(). Sul primo monitor funziona tutto bene. Ora quando sposto la cornice sul secondo monitor, le descrizioni dei comandi sono visualizzate sul bordo del monitor (sul lato del monitor principale). Questo succede solo con i tooltip di questo componente. Il problema si presenta anche su altre macchine. Eppure, l'ho provato solo con Vista.ToolTip sul secondo monitor viene visualizzato sul bordo del monitor

Perché è questo? Si tratta di un bug in Swing? Come posso risolvere il problema?

Il testo del suggerimento dipende dalla posizione del cursore del mouse. Pertanto posso modificare il codice e sovrascrivere il metodo getToolTipText (MouseEvent e). Sarebbe davvero bello sapere, qual è il motivo di questo problema, prima di iniziare a cambiare il codice.

Grazie in anticipo.

risposta

7

Ci sono diversi ticket di errore nel database dei bug Java che sembrano correlati a questo, ad es.

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

On è chiuso come duplicato di un altro, si sostiene di essere fisso e un altro ha insieme fissare comprensibile.

Una soluzione pubblicato da qualche utente è

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

kieron.wilkinson

Il motivo per cui funziona è che setLocation() fine Calles Component.reshape() che a sua volta chiama un metodo chiamato Component.notifyNewBounds(boolean resized, boolean moved), che attraversa la gerarchia dei componenti impostazione di ogni limite di componenti. Per impostazione predefinita , questo viene fatto "pigro" ma non sono impostati prima che la finestra sia spostata. Il codice precedente li impone a essere impostato.

Questo è anche il motivo per cui i tooltip iniziano a funzionare correttamente dopo aver trascinato la finestra da una schermata all'altra.

+0

Grazie, penso che tu abbia avuto un po 'di lavoro per cercare questo. Ho provato a cambiare il codice per getToolTipText che funziona bene dopo i primi test. –

+0

Beh un paio di ricerche su google e leggendo le tre segnalazioni di bug + post su di esse. Quindi scrivi la risposta. nessun problema – jitter

Problemi correlati