MouseListener/MouseMotionListener

  • Themenstarter Themenstarter Mad0x
  • Beginndatum Beginndatum
M

Mad0x

Gast
Hallo Community,

hab' nun gleich 2 Fragen an euch. Die erste ist: Wie kann man ein Video in einer ganz normalen Java-Apllikation abspielen lassen? Geht das so einfach wie mit der Musik?

Und 2.: Wr haben ein kleines Problem, wie wir das Menu gestalten sollen. Wir wollen es so designen wie wir es wollen, ergo kämen die Buttons nicht in Frage. Wir wollen der Apllikation sagen, dass wenn man in diesen Bereich klickt, sich das eine Fenster öffnet und bei einem anderen Bereich das andere Fenster.
Doch wie kann man das bewerkstelligen? Kann mir irgendjemand ein Beispiel geben wie man MouseListener und MouseMotionListener verbindet oder eine Hilfestellung?
 
Wr haben ein kleines Problem, wie wir das Menu gestalten sollen. Wir wollen es so designen wie wir es wollen, ergo kämen die Buttons nicht in Frage. Wir wollen der Apllikation sagen, dass wenn man in diesen Bereich klickt, sich das eine Fenster öffnet und bei einem anderen Bereich das andere Fenster.
Doch wie kann man das bewerkstelligen? Kann mir irgendjemand ein Beispiel geben wie man MouseListener und MouseMotionListener verbindet oder eine Hilfestellung?

Ich habe bei einer Anwendung von mir das Problem wie folgt gelöst (die Objekte, auf die man klicken konnte, befanden sich in einem JPanel)

In dem JPanel habe ich einen MouseAdapter hinzugefügt:

Code:
//.....
    MouseAdapter adapter = new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                reactToKey(e, MouseEvent.MOUSE_DRAGGED);
            }

            @Override
            public void mouseClicked(MouseEvent e) {
                super.mouseClicked(e);
                reactToKey(e, MouseEvent.MOUSE_CLICKED);
            }

            @Override
            public void mouseDragged(MouseEvent e) {
                super.mouseDragged(e);
                reactToKey(e, MouseEvent.MOUSE_DRAGGED);
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                super.mouseEntered(e);
                reactToKey(e, MouseEvent.MOUSE_ENTERED);
            }

            @Override
            public void mouseExited(MouseEvent e) {
                super.mouseExited(e);
                reactToKey(e, MouseEvent.MOUSE_EXITED);
            }

            @Override
            public void mouseMoved(MouseEvent e) {
                super.mouseMoved(e);
                reactToKey(e, MouseEvent.MOUSE_MOVED);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                super.mouseReleased(e);
                reactToKey(e, MouseEvent.MOUSE_RELEASED);
            }
        };

        this.addMouseListener(adapter);
        this.addMouseMotionListener(adapter);
//...

In der Methode reactToKey() habe ich dann die verschiedenen MouseEvents behandelt. Hier ein Code Fragement

Code:
protected void reactToKey(MouseEvent e, int eventType) {
        if (editMode) {
            if (eventType == MouseEvent.MOUSE_CLICKED) {
                if (e.getClickCount() > 1) {
                    if (e.getButton() == MouseEvent.BUTTON1) {
                        Object item = routing.getClickedItem(e.getPoint());
                        if (item == null) {
                            item = layout.getClickedItem(e.getPoint());
                        }
                        if (item != null) {
                            if (item instanceof Task) {
                                Task t = (Task) item;
                                editTask(t);
                                return;
                            } else if (item instanceof Procurement) {
                                Procurement p = (Procurement) item;
                                editPurchase(p);
                                return;
                            } else if (item instanceof Machine) {
                                Machine m = (Machine) item;
                                editMachine(m);
                                return;
                            }
                        }
Die Prüfung, auf welches Objekt geklickt wurde, erfolgte in den Methoden getCklickedItem(). Meine Objekte waren alle rechteckig, eine Prüfung ob sich ein Punkt innerhalb des Rechtecks befand:

Code:
public boolean containsPoint(Point p){
         java.awt.Rectangle r = new java.awt.Rectangle(position, dimension);
         return r.contains(p);
    }

Vielleicht helfen die Hinweise.
 
Hi,

Java SE ... such doch mal per Google, ob Java SE Video rendern kann.

Java ME und Co., also Spezialversionen, die eventuell je nach Betriebssystem
verfügbar sind und dort die Hardeware konkret ansteuern .... auch mal googlen.

Es gibt fertige Player in Java, also Arbeit einsparen.

Und nie vergessen: Ändert sich die Java-Version, ändert sich eventuell
der Code.
Analogon: MP3 war in Java SE nicht beliebt. Dafür gibt es Ersatzcode, den
man inzwischen pflegen muss.

Java SE wird regelmäßig geupdatet. Alle anderen Versionen eventuell nicht.

Vielleicht doch bei Video auf Alternative wie Flash zurückgreifen.

Java 7 ist im Anmarsch.

Cu.
 

Zurück
Oben