tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
366
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    barsiq barsiq ist offline Mitglied Bronze
    Registriert seit
    Jul 2007
    Ort
    Aachen
    Beiträge
    45
    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.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
            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.
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    1. Touchscreen-support für Java ist noch nicht umgesetzt, d.h. es wird immer eine Maus imitiert.

    2. Nutze einen (transparenten) JComponent, der über allem Inhalt liegt und modifiziere ihn so, dass er die MouseEvents unter bestimmten Umständen nicht weiter gibt
    2.a) Nutze Java 7 und JLayer. Lege ein JLayer über den gesamten Inhalt des Fensters
    2.b) Modifiziere das JLayeredPane deines RootContainers
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

Ähnliche Themen

  1. Touchscreen für die Küche
    Von gordonk im Forum Hardware
    Antworten: 9
    Letzter Beitrag: 15.10.09, 13:41
  2. Touchscreen Panel PC
    Von Kimex08 im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 26.05.09, 08:28
  3. Scrollbar für Touchscreen
    Von Choe im Forum Java
    Antworten: 1
    Letzter Beitrag: 15.01.09, 11:41
  4. Touchscreen-PC-Monitore ab 17''
    Von 3DVisionX im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 30.11.07, 17:22
  5. Touchscreen - Anschluss an beliebigen PC
    Von g-zus im Forum Hardware
    Antworten: 5
    Letzter Beitrag: 14.01.05, 19:46

Stichworte