Hi,
und zwar habe ich ein JPanel worauf ich einen MouseListener gelegt hab. Sobald ich mit der Maus nun in das Pannel komme, wird per MouseEntered ein MouseMotionListener hinzugefuegt.
In dem JPanel sind mehrere Bilder verschiedener Objekte, dort soll dann pro Bild ein pop up mit Informationen erscheinen. Beim MouseMove errechne ich auf welchem Bild die Maus steht und lasse dann ein JWindow erscheinen mti den Infos. Jetzt wollte ich ein delay hinzufuegen, sodass die Maus erst einige Zeit auf dem Bild sein muss bevor das Informationsfenster erscheint. Funktioniert auch super mit Timer und Timertask.
In der show methode wird dann das Jwindow befuellt und auf visible gesetzt.
Jetzt hab ich nen Problem wenn ich etwas zu lange auf einem verweile und dann das Fenster verlasse (MouseExited) wird dennoch das Informationsfenster angezeigt.
Verweile ich net so lange mit der Maus in dem Panel kommt volgende Ausgabe
Vielleicht weiss von euch einer weiter. Danke schonma
und zwar habe ich ein JPanel worauf ich einen MouseListener gelegt hab. Sobald ich mit der Maus nun in das Pannel komme, wird per MouseEntered ein MouseMotionListener hinzugefuegt.
In dem JPanel sind mehrere Bilder verschiedener Objekte, dort soll dann pro Bild ein pop up mit Informationen erscheinen. Beim MouseMove errechne ich auf welchem Bild die Maus steht und lasse dann ein JWindow erscheinen mti den Infos. Jetzt wollte ich ein delay hinzufuegen, sodass die Maus erst einige Zeit auf dem Bild sein muss bevor das Informationsfenster erscheint. Funktioniert auch super mit Timer und Timertask.
Java:
TimerTask timerTask = _timerTask;
if ( timerTask != null )
{
System.out.println( "cancel timer for last object ");
timerTask.cancel();
}
timerTask = new TimerTask()
{
public void run()
{
show( );
}
};
System.out.println( "start timer for current object" );
_timerTask = timerTask;
_timer.schedule( timerTask , DELAY );
Jetzt hab ich nen Problem wenn ich etwas zu lange auf einem verweile und dann das Fenster verlasse (MouseExited) wird dennoch das Informationsfenster angezeigt.
Java:
public void mouseExited( final MouseEvent e )
{
System.out.println( "______ MOUSE EXITED ______ " );
if ( _timerTask != null )
{
System.out.println( "cancel timer for current object" );
_timerTask.cancel();
}
...
Der Timer wird zwar gecancelt, dennoch wird danach show aufgerufen.______ MOUSE ENTERED ______
cancel timer for last object
start timer for current object
______ MOUSE EXITED ______
cancel timer for current object
show
Verweile ich net so lange mit der Maus in dem Panel kommt volgende Ausgabe
______ MOUSE ENTERED ______
cancel timer for last object
start timer for current object
______ MOUSE EXITED ______
cancel timer for current object
Vielleicht weiss von euch einer weiter. Danke schonma
