Hallo,
ich experementiere grade an einer Lösung, mit der ToolTips auf einem Touchscreen-Monitor (PC) benutzt werden können.
Das Problem ist in der Methode mousePressed(MouseEvent e) des ToolTipManagers - diese schließt das ToolTip, wird jedoch stets aufgerufen alsbald man da was mit Finger anvisiert. Die eigentliche Action wird erst beim Loslassen ausgelöst, so gesehen wäre es kein Widerspruch.
Forgender Code entfernt den Original-TooltipManager und setzt einen neuen, mit TT im TS.
Diese Lösung funktioniert, muß allerdings für jede Komponente erfolgen (alte löschen, neue setzen).
Mich würde eine Möglichkeit interessieren diesen Tausch zentral und an nur einer Stelle für alle Komponenten der Applikation zu realisieren.
Oder es gibt auch andere Wege zur Problemlösung - die wären auch mehr als willkommen.
ich experementiere grade an einer Lösung, mit der ToolTips auf einem Touchscreen-Monitor (PC) benutzt werden können.
Das Problem ist in der Methode mousePressed(MouseEvent e) des ToolTipManagers - diese schließt das ToolTip, wird jedoch stets aufgerufen alsbald man da was mit Finger anvisiert. Die eigentliche Action wird erst beim Loslassen ausgelöst, so gesehen wäre es kein Widerspruch.
Forgender Code entfernt den Original-TooltipManager und setzt einen neuen, mit TT im TS.
Code:
MouseInputListener milLabel = new MouseInputAdapter(){
@Override
public void mouseEntered(MouseEvent event) {
System.err.println("mouseEntered");
ToolTipManager.sharedInstance().mouseEntered(event);
}
@Override
public void mouseExited(MouseEvent event) {
System.err.println("mouseExited");
ToolTipManager.sharedInstance().mouseExited(event);
}
@Override
public void mousePressed(MouseEvent event) {
System.err.println("mousePressed");
// ToolTipManager.sharedInstance().mouseExited(event);
}
@Override
public void mouseDragged(MouseEvent event) {
System.err.println("mouseDragged");
ToolTipManager.sharedInstance().mouseDragged(event);
}
@Override
public void mouseMoved(MouseEvent event) {
System.err.println("mouseMoved");
ToolTipManager.sharedInstance().mouseMoved(event);
}
// @Override
// public void mouseReleased(MouseEvent event) {
// System.err.println("mouseReleased");
// ToolTipManager.sharedInstance().mousePressed(event);
// }
};
for(MouseListener l : label.getMouseListeners()){
System.err.println("MouseListener:\t" + l.getClass().getCanonicalName());
label.removeMouseListener(l);
}
for(MouseMotionListener l : label.getMouseMotionListeners()){
System.err.println("MouseMotionListener:\t" + l.getClass().getCanonicalName());
label.removeMouseMotionListener(l);
}
label.addMouseListener(milLabel);
label.addMouseMotionListener(milLabel);
Diese Lösung funktioniert, muß allerdings für jede Komponente erfolgen (alte löschen, neue setzen).
Mich würde eine Möglichkeit interessieren diesen Tausch zentral und an nur einer Stelle für alle Komponenten der Applikation zu realisieren.
Oder es gibt auch andere Wege zur Problemlösung - die wären auch mehr als willkommen.