MouseListener

kitz

Mitglied
Hallo,

ich hau dann gleich mal meine zweite Frage raus. Ich muss netterweise drei Aufgaben innerhalb von ner Woche für meinen Prof abliefern, wie immer auf den letzten Drücker *grummel*
Anderes Programm, folgender Code:

Java:
import java.awt.*;
import java.awt.event.*;

public class EA4_1 extends Frame {
    private String s = "Mouse-Position: ( 0 | 0 )";
    private String b = "Mouse-Position: ( 0 | 0 )";
        
    EA4_1(String titel) {
        super(titel);
        setSize(400, 400);
        setVisible(true);
        MeinWindowAdapter meinWa = new MeinWindowAdapter();
        addWindowListener(meinWa);
    }

    public void paint (Graphics g) {
        g.drawString(s, 15, 40);
        g.drawString(b, 15, 60);
        g.drawOval(50, 100, 250, 150);
    }

    class MyMouseMotionListener implements MouseMotionListener{

        public void mouseDragged(MouseEvent mE) {
        int x = mE.getX();
        int y = mE.getY();
        b = "Mouse-Position: ( " + x + " |  " + y + " )";
        repaint();
        }

        public void mouseMoved(MouseEvent e) {
        }
    }

    class MyMouseListener extends MouseAdapter {
        public void mousePressed(MouseEvent mE) {
            Graphics g = getGraphics();
        int x = mE.getX();
        int y = mE.getY();
        s = "Mouse-Position: ( " + x + " |  " + y + " )";
        repaint();
        if (mE.isMetaDown()) { //grimmig
               g.drawString("Rechte Maustaste", 50, 100);
            } else {                  //lächeln
               g.drawString("Linke Maustaste", 50, 120);
            }

    }
        
        public void mouseClicked(MouseEvent mE) {}
        public void mouseEntered(MouseEvent mE) {}
        public void mouseExited(MouseEvent mE) {}
        public void mouseReleased(MouseEvent mE) {}
    }

    public void init() {
        addMouseListener(new MyMouseListener());
        addMouseMotionListener((MouseMotionListener) this);
    }

   class MeinWindowAdapter extends WindowAdapter {
       public void windowClosing(WindowEvent e) {
           System.exit(0);
       }
   }
    
    public static void main (String [] args) {
     new EA4_1("EA4_1 MouseListener");
    } 
}

Ich habe so ein ähnliches Programm, allerdings mit Applet und da funzt das.
Nun soll ich mit Frame arbeiten, aber MouseListener funzt net und MotionListener auch nicht.
Und die Unterscheidung welche Maustaste gedrückt wurde auch nicht.
Weiß nicht woran es liegt auch wenn das vielleicht blöde aussieht nu :oops:
 

agentone

Bekanntes Mitglied
Die init()-Methde fügt zwar die Listener hinzu, allerdings wird die Methode selbst nie aufgerufen...
-> Also den Aufruf init(); in den Konstruktor einfügen
(Ich glaub, du verwechselst Applet, bei den init() aufgerufen wird, und normale Apps, bei denen dies nicht passiert. :))

edit: Und was mir noch grad so auffällt:
Diese Zeile solltest du nochmal überarbeiten:
Java:
addMouseMotionListener((MouseMotionListener) this);
Das hat auch keinen Sinn oder Zweck:
Java:
g.drawString("Rechte Maustaste", 50, 100);
Warum verwendest du kein Swing? Dann könntest du dir sowas sparen:
Java:
class MeinWindowAdapter extends WindowAdapter {
       public void windowClosing(WindowEvent e) {
           System.exit(0);
       }
   }
Du brauchst keine leeren Methoden implementieren, wenn du eine Klasse erweiterst:
Java:
public void mouseClicked(MouseEvent mE) {}
        public void mouseEntered(MouseEvent mE) {}
        public void mouseExited(MouseEvent mE) {}
        public void mouseReleased(MouseEvent mE) {}
-> kann gelöscht werden
 
Zuletzt bearbeitet:

kitz

Mitglied
wieso, mit der zeile sage ich ihm doch wenn ich die rechte maustaste benutze soll er mir das auswerfen und das macht er auch...

Java:
g.drawString("Rechte Maustaste", 50, 100);

und ja, der mouselistener funktioniert nun, danke ;)
bei dem motion merke ich dass was falsch ist, aber ich sehe noch nicht was... vielleicht kommt die erleuchtung ja gleich noch bei mir...
 

kitz

Mitglied
fehler selber gefunden habe.. nun funzt auch der motionlistener :D

Java:
addMouseMotionListener(new MyMouseMotionListener());
 

knoppers

Bekanntes Mitglied
Hallo, kleiner Ratschlag mal am Rande wie schon mein Vorgänger geschrieben hatte.

Java:
 class MyMouseMotionListener implements MouseMotionListener{

Kannst du dir sparen. Einfach den MouseMotionListener auf die obere Klasse. Du musst lediglich die Oberklasse von extends Frame auf extends JFrame.

Java:
        public void mousePressed(MouseEvent mE) {
            Graphics g = getGraphics();
        int x = mE.getX();
        int y = mE.getY();
        s = "Mouse-Position: ( " + x + " |  " + y + " )";
        repaint();
        if (mE.isMetaDown()) { //grimmig
               g.drawString("Rechte Maustaste", 50, 100);
            } else {                  //lächeln
               g.drawString("Linke Maustaste", 50, 120);
            }
 
    }

Dies ist nicht gerade die schöne und gute Art mit Graphics g = getGraphics und dann ein g.drawString(...)

Die Graphics sollte man wenn möglich hauptsächlich in den Überschreibenden Methoden von paint usw. verwenden.

Verwende lieber MouseAdapter als MouseListener. Da brauchst du nicht alle Methoden, sondern nur die, die du auch verwendest.
 

agentone

Bekanntes Mitglied
Java:
Graphics g = getGraphics();
erstellt ein Graphics-Objekt, und
Java:
g.drawString("Rechte Maustaste", 50, 100);
zeichnet in dieses. Aber du sagst niemals, dass der diese Graphics anzeigen soll! Deshalb dürfte da auch nicht "Rechte Maustaste" oder "Linke Maustaste" auf dem Bildschirm stehen!
 

kitz

Mitglied
da steht aber linke oder rechte Maustaste ;) das zeigt er mir an beim Klicken

Ich arbeite mit awt weil ich damit vom Studium aus gewohnt bin mit zu arbeiten

achso und das mit dem MouseListener ist so in der Aufgabe vorgegeben, da kann ich nix dran ändern das so zu basteln

Java:
class MyMouseMotionListener implements MouseMotionListener{
 
Zuletzt bearbeitet:

agentone

Bekanntes Mitglied
Ahhh sorry, ich hab mich verlesen:
Da steht ja "getGraphics()" und nicht "new Graphics()". :oops:

Aber trotzdem sollte man alle Zeichnungen in der paint-Methode vornehmen, und zwar mit dem dort übergebenen Graphics-Objekt. Aber wenn's denn funktioniert...
 

Marco13

Top Contributor
Hmja, es funktioniert vielleicht jetzt und auf diesem PC. Aber das getGraphics ist ein beliebter Fehler. Wenn hier jemand einen Thread startet, in dem es dem Titel nach um Zeichenprobleme geht, lese ich den Code erstmal nicht, sondern starte erstmal mit STRG+F eine Suche nach "getGraphics", und wenn es vorkommt (schaue ich noch, ob das auch nicht auf einem BufferedImage gemacht wird und) schreibe ich die übliche Leier: NUR von der paint/paintComponent-Methode aus malen!

EDIT: Wo wir gerade beim Thema sind: http://www.java-forum.org/awt-swing-swt/102373-jpanel-zeichnung-verschwindet.html :D
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
H MouseListener klicks begrenzen Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
V Problem - MouseListener/2DGraphics Java Basics - Anfänger-Themen 2
R Variablen MouseListener funktioniert auf anderen Pcs nur bedingt Java Basics - Anfänger-Themen 6
G MouseListener funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
R Variable Klassenübegreifend MouseListener Java Basics - Anfänger-Themen 0
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
J MouseListener für Schleifen-Objekte Java Basics - Anfänger-Themen 13
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
S GUI ImageIcon Mouselistener Link Java Basics - Anfänger-Themen 0
P MouseListener funktioniert nicht Java Basics - Anfänger-Themen 6
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Problem mit MouseListener Java Basics - Anfänger-Themen 4
T MouseListener, recht Taste Java Basics - Anfänger-Themen 2
M MouseListener funktioniert nicht Java Basics - Anfänger-Themen 9
E Mouselistener auf jTable Java Basics - Anfänger-Themen 18
B Variablen an MouseListener übergeben Java Basics - Anfänger-Themen 5
H MouseListener für ein eingefügtes Bild in einem JFrame Java Basics - Anfänger-Themen 7
H Mouselistener bei JTable Java Basics - Anfänger-Themen 4
G MouseListener für mehrere Buttons Java Basics - Anfänger-Themen 11
J MouseListener fuer gezeichnete Polyline Java Basics - Anfänger-Themen 3
L Label + MouseListener Java Basics - Anfänger-Themen 12
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
M MouseListener Java Basics - Anfänger-Themen 2
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
D Problem mit Mouselistener und jtable Java Basics - Anfänger-Themen 7
C fragen zu MouseListener Java Basics - Anfänger-Themen 3
M MouseListener funktioniert in jar-file nicht mehr Java Basics - Anfänger-Themen 13
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
S Probleme mit 2 mouselistener Java Basics - Anfänger-Themen 6
A Frage zu MouseListener Java Basics - Anfänger-Themen 2
D Mouselistener Java Basics - Anfänger-Themen 2
A jPanel an MouseListener übergeben? Java Basics - Anfänger-Themen 2
S Swing JEditoPane MouseListener Java Basics - Anfänger-Themen 5
M Mouselistener Java Basics - Anfänger-Themen 4
S MouseListener funzt net. Java Basics - Anfänger-Themen 5
G MouseListener double click? Java Basics - Anfänger-Themen 1
V MouseListener Java Basics - Anfänger-Themen 5
M MouseListener Java Basics - Anfänger-Themen 3
N Mouselistener? Java Basics - Anfänger-Themen 5
T ein MouseListener pro Objekt sinnvoll? Java Basics - Anfänger-Themen 4
F MouseListener - Unhandled IOException Java Basics - Anfänger-Themen 2
U MouseListener Java Basics - Anfänger-Themen 2
L Array von Buttons, jeder soll MouseListener haben Java Basics - Anfänger-Themen 5
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
L MouseListener Problem. Java Basics - Anfänger-Themen 2
S mouselistener Java Basics - Anfänger-Themen 3
N MouseListener Java Basics - Anfänger-Themen 2
J MouseListener implementieren Java Basics - Anfänger-Themen 12
P MouseListener wird anscheinend nicht benutzt Java Basics - Anfänger-Themen 12
N MouseListener - reagiert zu spät Java Basics - Anfänger-Themen 3
D JList - Textzeilen MouseListener zuweisen Java Basics - Anfänger-Themen 4
M prüfen ob mouselistener gesetzt ist. Java Basics - Anfänger-Themen 10
O image und mouseListener Java Basics - Anfänger-Themen 15
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
P Kann keinen MouseListener hinzufügen Java Basics - Anfänger-Themen 3
G MouseListener einbauen - wie? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben