Swing Immer aktuelle Mausposition anzeigen lassen

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich wollte heut ein Programm erstellen, mit dem ich zum Einen "malen" kann.
Das funktioniert soweit auch. Zusätzlich wollte ich eine weitere Komponente einfügen, welche, wenn die Maus "gemoved" oder geklickt wird, die aktuelle Position anzeigt.
Hierzu hatte ich zunächst ein JLabel versucht und hierauf einfach die jeweilige x und y Koordinate geaddet. Dies funktioniert leider nicht. Bzw. es reagiert nur, wenn der "löschen" button gedrückt wird. Dann wird das ganze ContentPane gelöscht und die letzte x,y Koordinate angezeigt. Dies soll aber immer beim bewegen und beim klicken passieren.
Genauso, als wenn die Ausgabe über System.out.println ausgegeben werden würde.
Hat hier jemand einen Tipp?

Mein aktueller Code:

Java:
public class MitMausZeichnen extends JFrame{
    public int xval=0,yval=0;
    JButton loeschen=new JButton("löschen");
    JLabel anzeige=new JLabel();
  
    public MitMausZeichnen() {
        setSize(500, 500);
        getContentPane().add(loeschen,BorderLayout.NORTH);
        getContentPane().add(anzeige,BorderLayout.SOUTH);
        loeschen.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                getContentPane().repaint();
            }
        });
        addMouseListener(new MouseListener() {
          
            @Override
            public void mouseReleased(MouseEvent e) {
            }
            @Override
            public void mousePressed(MouseEvent e) {
            }
            @Override
            public void mouseExited(MouseEvent e) {
            }
            @Override
            public void mouseEntered(MouseEvent e) {
            }
            @Override
            public void mouseClicked(MouseEvent e) {
                // TODO Auto-generated method stub
                xval=e.getX();yval=e.getY();
                anzeige.setText(""+xval+" "+yval);
              
                repaint();
                revalidate();
            }
        });
        addMouseMotionListener(new MouseMotionListener() {
          
            @Override
            public void mouseMoved(MouseEvent e) {
            }
            @Override
            public void mouseDragged(MouseEvent e) {
                // TODO Auto-generated method stub
                xval=e.getX();yval=e.getY();
                repaint();
            }
        });
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
  
  
    public void paint(Graphics g)
    {
        g.fillOval(xval, yval, 3, 3);
    }

    public static void main(String[] args) {
        new MitMausZeichnen();
    }
}

Ich würde mich über einen Tipp oder eine Lösung freuen :)

Lg
 
Zuletzt bearbeitet von einem Moderator:

Alex2013

Bekanntes Mitglied
Ich hatte auch schon bei google oder Youtube gesucht. Aber zu dieser Fragestellung habe ich bisher leider noch nichts gefunden.
Auch weitere Versuche brachten keine Verbesserung :-(
 

Robat

Top Contributor
Wenn du implementieren Willst, dass du Immer die aktuelle Mausposition anzeigen lassen will wenn Sie bewegt wird dann solltest du einen MouseMotionListener implementieren

Java:
public class MyClass implements MouseMotionListener{

    public void mouseMoved(MouseEvent e){
       System.out.println("X : "+ e.getX());
       System.out.println("Y : "+ e.getY());
    }

    public void mouseDragged(MouseEvent e){
       //do something
    }

}
 

Alex2013

Bekanntes Mitglied
@Robat: Das hatte ich auch schon versucht (siehe Code weiter unten). Mir wird auch jede beliebige Position in der "Konsole" per System.out. angezeigt. Das ist überhaupt kein Problem. Nur wenn ich die Koordinaten, sei es direkt nach einem Klick oder permanent, also immer, in einem JLabel anzeigen lassen möchte (auch schon mit JTextfield versucht), funktioniert dies nur, wenn ich einen einzelnen Klick durchführe und anschließend auf "löschen" gehe. Vorher nicht.
Ich hatte es auch schon in einigen Methoden die im Code stehen mit revalidate und getContentPane.repaint etc. versucht. Dies brachte auch nichts.
Die Point Klasse hat mir hier auch noch nicht weitergeholfen... :-(
Daher frage ich mich, was ich noch versuchen kann...

Hat sonst noch jemand einen Tipp?
 

Robat

Top Contributor
Du brauchst keine anderen Tipp - du musst nur den MouseMotionListener richtig implementieren :p

Java:
private JFrame frame;
private JPanel panel;
privatee JLabel label;

public static void main(String agrs[])
{
     initWindow();
}

private void initWindow()
{ 
        // Initialize the JFrame
         frame = new JFrame();
         frame.setTitle("Mein Super Schönes Programm");
         frame.setSize(500, 500);
         frame.setLocationRelativeTo(null);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
         // Initialize the Panel
         panel = new JPanel();
         panel.setSize(500, 500);
         panel.setLayout(new BorderLayout());

         // Initialize the Label
         label = new JLabel();
         label.setSize(100, 100);
         label.setText("X:    Y:   ");
         
         // add MouseMotionListener to the Panel
         panel.addMouseMotionListener(new MouseMotionListener() {
             @Override
             public void mouseDragged(MouseEvent e) {
                 label.setText("X: " + String.valueOf(e.getX() + "    Y: " + String.valueOf(e.getY())));
             }

             @Override
             public void mouseMoved(MouseEvent e) {
                 label.setText("X: " + String.valueOf(e.getX() + "    Y: " + String.valueOf(e.getY())));
             }
         });

         panel.add(label, BorderLayout.NORTH);
         
         
        frame.add(panel);
        frame.setVisible(true);
}

Ist nur fix mal geschrieben, sollte aber funktionieren. Ich würde dir raten, nicht alles in dein JFrame zu klatschen, sondern noch ein JPanel dazwischen zu legen. Falls du dein Programm mal erweitern möchtest mit versch. Layouts macht es das JPanel etwas leichter.

Ausserdem würde ich dir raten nicht von JFrame zu erben, da es dich in deiner Funktionalität einschränkt. (Du kannst du von einer Klasse erben). Da du aber die Funktionalität von deinem Frame nicht erweitern willst, sondern nur die Methoden benutzt, brauchst du auch nicht davon zu erben :)

Gruß
Robert
 

Robat

Top Contributor
Jupp das mit den static kannst du verhindern, indem du den Konstruktor in der main-Methode aufrufst und der Konstruktor wie folgt aussieht:

Java:
public ClassName()
{
     initWindow();
}

public static void main(String[] args)
{
     ClassName classNameInstanze = new ClassName();
     // bzw einfach nur new ClassName();
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java öffnet immer im editor Allgemeine Java-Themen 1
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
C Variablen == gibt immer false aus. Allgemeine Java-Themen 2
@SupressWarnings() Multilanguaging lädt immer falsch Allgemeine Java-Themen 5
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
J StringTokenizer - Trennzeichen nicht immer beachten Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
I Java Applet wird immer blockiert Allgemeine Java-Themen 3
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
E Immer nur der Catch-Zweig Allgemeine Java-Themen 3
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
K Image beim catchen ist immer null Allgemeine Java-Themen 9
M Input/Output Datei erzeugen funktioniert nicht (immer) vom .jar aus Allgemeine Java-Themen 5
7 String in Int, immer ein Anführungszeichen Allgemeine Java-Themen 4
T Wie heißt ein Binärbaum, dessen Knoten immer zwei Kinder haben müssen? Allgemeine Java-Themen 2
D Webseite wird nicht immer komplett ausgelesen Allgemeine Java-Themen 11
2 Array immer die Mitte (Nicht trivial) Allgemeine Java-Themen 4
R JNI if abfrage gibt immer false zurück. Allgemeine Java-Themen 7
E rückgabewert ist immer null Allgemeine Java-Themen 2
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
D Api mit eine Methode die "immer" läuft bis "stop" "gerufen wird. Allgemeine Java-Themen 25
VfL_Freak ServerSocket wirft nicht immer eine BindException Allgemeine Java-Themen 21
J Comparable aber nicht immer Allgemeine Java-Themen 15
D KeyEvents immer fangen Allgemeine Java-Themen 5
data89 A-Stern: fährt immer wieder vor die Wand! - Hilfeeee Allgemeine Java-Themen 7
L Applet immer wieder neu laden - Problem Allgemeine Java-Themen 25
V Hostname abfragen gelingt nicht immer Allgemeine Java-Themen 2
S Wieso stehen in der API immer wieder abstrakte Methoden ? Allgemeine Java-Themen 7
S Methode übergibt immer den gleichen Wert Allgemeine Java-Themen 21
thE_29 Generic Methoden die sich aufrufen wollen nicht immer Allgemeine Java-Themen 12
A Rekursives Programm wird immer langsamer Allgemeine Java-Themen 10
T jmf - Immer "Unable to handle fo rmat:" Allgemeine Java-Themen 2
B in file immer 2. zeile überschreiben Allgemeine Java-Themen 8
J Variabeln immer klein aber. Allgemeine Java-Themen 4
T Log4J: Bei Programmstart immer eine neue LogDatei erzeugen Allgemeine Java-Themen 9
M Double immer mit 2 Kommastellen Allgemeine Java-Themen 3
B RXTX sendet immer mit 9600Baud Allgemeine Java-Themen 4
J Eigener ClassLoader wird nicht immer verwendet Allgemeine Java-Themen 3
J Immer noch OpenOffice.org - Malheur Allgemeine Java-Themen 4
R Immer wieder NullPointerException Allgemeine Java-Themen 2
G Programm wird immer langsamer Allgemeine Java-Themen 7
Ark Bild immer als ARGB laden Allgemeine Java-Themen 2
spacegaier invokeLater wird doch immer ausgeführt, oder? Allgemeine Java-Themen 8
S Job immer wieder ausführen Allgemeine Java-Themen 4
G wieso wird der String des StringBuilder immer länger? Allgemeine Java-Themen 2
P Filechooser öffnet sich immer wieder neu Allgemeine Java-Themen 4
M Wenn immer nur einer darf . Allgemeine Java-Themen 3
M getResourceAsStream immer null Allgemeine Java-Themen 4
S Eclipse zeigt build.xml immer als fehlerhaft Allgemeine Java-Themen 12
M Mausposition immer lesen können Allgemeine Java-Themen 18
M Datei immer auslesen können, auch im JAR Allgemeine Java-Themen 7
S Prozess javaw.exe läuft immer noch, obwohl Programm beendet Allgemeine Java-Themen 6
H Objekte verbrauchen immer mindestens 16 Bytes Allgemeine Java-Themen 3
E ArrayList referenziert immer auf das gleiche Objekt Allgemeine Java-Themen 2
G Consoleneingabe wird nicht immer gelesen Allgemeine Java-Themen 2
S Web Applikation wird immer langsamer Allgemeine Java-Themen 5
M statische regex und vergleiche oder immer wieder compilen Allgemeine Java-Themen 2
thE_29 Werden die SUN JVMs immer blöder oder was soll das. Allgemeine Java-Themen 11
K Date: getTime immer gleich Allgemeine Java-Themen 4
G Servlet - "Client immer am neuesten Stand" Allgemeine Java-Themen 2
S JMF & Lied immer wiederholen Allgemeine Java-Themen 7
J Integer.parseInt funktioniert nicht immer Allgemeine Java-Themen 3
thE_29 Konsolenausgabe immer am gleichen Platz Allgemeine Java-Themen 14
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
kodela aktuelle Position des Hauptfensters abfragen Allgemeine Java-Themen 12
F Aktuelle Variable Allgemeine Java-Themen 2
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
K kontinuierlich aktuelle Bestellsystem-Liste mit farbigem Status Allgemeine Java-Themen 2
F Die aktuelle Uhrzeit zurückgeben lassen Allgemeine Java-Themen 4
DEvent Aktuelle Uhrzeit per Anwendung Allgemeine Java-Themen 4
MQue aktuelle Wetterdaten für Java- Programm Allgemeine Java-Themen 9
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
G Reflection: aktuelle bzw umschliessende Methode? Allgemeine Java-Themen 7
Kidao Wie ordne ich die aktuelle Zeit in einer Zeitreihe eine? Allgemeine Java-Themen 6
B Aktuelle Zeit im Format YYYY-MM-DD HH-MM-SS in Logfile schre Allgemeine Java-Themen 8
R Aktuelle Kompatibilitätsliste für JRE auf verschiedenen OS´s Allgemeine Java-Themen 2
G Aktuelle JRE Version? Allgemeine Java-Themen 7
F Wie bekomme ich die aktuelle aufgerufene Methode herraus? Allgemeine Java-Themen 6
L Das aktuelle Directory, in dem sich das Programm ausdrucken Allgemeine Java-Themen 8
G Das aktuelle Fenster drucken Allgemeine Java-Themen 13
J File: Inhalt des Ordners aus dem die aktuelle Datei ausgefüh Allgemeine Java-Themen 6
O aktuelle Tage bis zum jahresende ermitteln Allgemeine Java-Themen 3
S aktuelle url aus browser holen Allgemeine Java-Themen 5
J Mausposition setzen Allgemeine Java-Themen 2
A Relative Mausposition ohne Event Allgemeine Java-Themen 2
J zoom zur mausposition Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben