kostenloser Webspace werbefrei: lima-city


MouseMotionListener

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Hallo! Ich habe ein recht einfaches Problem: Ich habe einem JFrame einen MouseMotionListener übergeben und der spricht auch gut an. Wenn jetzt allerdings ein JButton die freie Fläche verdeckt spricht der MouseMotionListener hingegen nicht mehr an. Ich möchte aber nicht jedem Element auf meinem JFrame einen eigenen Listener übergeben, da der immer gleich wäre. Wie kann ich sicherstellen, dass der MouseMotionListener auf jede Bewegung innerhalb des Frames anspricht?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,

    das ist ein Problem, das öfter auftaucht und ohne einen ordentlichen workaround nicht zu beheben ist.
    Du könntest ein GlassPane über Deinen Frame legen, das die Mausbewegungen für Dich abfängt.
    Logischerweise werden dann alle Events von den darunter liegenden Komponenten abgefangen.
    Du müsstest jedes Event also per Redirect an die entsprechende Komponente weiterleiten.

    Ein Beispiel:
    http://weblogs.java.net/blog/joshy/archive/2003/10/swing_hack_4_th.html

    Gruß,
    Pawnee

    Beitrag zuletzt geändert: 4.11.2010 11:34:12 von pawnee
  4. Letzterer Vorschlag ist überhaupt kein"Hack" sondern die von den Java-Entwicklern angedachte und empfohlene Methode:

    Du ordnest den MouseMotionListener dembereits vorhandenen(!) GlasPane in JFrame zu (Lesen (Doku) bildet ;-) ) und fertig.
    Ein neues GlasPane wird NICHT benötigt!

    JFrame f = new JFrame();

    f.getGlasPane().addMouseListener(myMouseListener);

    &greetinx;
    WS
  5. wsgraphics schrieb:
    Letzterer Vorschlag ist überhaupt kein"Hack" sondern die von den Java-Entwicklern angedachte und empfohlene Methode:

    Du ordnest den MouseMotionListener dembereits vorhandenen(!) GlasPane in JFrame zu (Lesen (Doku) bildet ;-) ) und fertig.
    Ein neues GlasPane wird NICHT benötigt!

    JFrame f = new JFrame();

    f.getGlasPane().addMouseListener(myMouseListener);

    &greetinx;
    WS
    Moin,

    von einem Hack war hier nie die Rede, sondern lediglich von einem workaround - der ein Problem löst, was mit einfachsten Mitteln nicht durchführbar wäre.

    Sicher wäre der Gebrauch des vom JFrame existierenden GlassPanes vorzuziehen.
    Das Prinzip bliebe dennoch dasselbe, aber das Problem ist ohne das Weiterleiten der Events nicht gelöst.

    Dafür gibt es diesen Lösungsansatz bereits in dem Java Tutorial für Root Panes:
    http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html

    Gruß,
    Pawnee

    Beitrag zuletzt geändert: 5.11.2010 20:01:39 von pawnee
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!