MouseMotionListerener & Verfügbarkeit von Variablen

fichte77

Neues Mitglied
Hallo Leute,

nach einer Weile will ich wieder ein kleines Java-Spiel programmieren. Um mir ein halbwegs nützliches Template aufzubauen, erstellte ich folgenden Code:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class MyFrame
{
  public static void main(String[] args)
  { 
    JFrame myFrame = new JFrame();
    JPanel myPanel = new JPanel();
    Container myContainer = myFrame.getContentPane();
    
    myFrame.setSize(800,600);
    myFrame.setLocationRelativeTo(null);
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myFrame.setVisible(true);
    
    myContainer.add(myPanel);
    myContainer.add(new MouseMotionEvents());
  }
}

class MouseMotionEvents extends JPanel implements MouseListener, MouseMotionListener 
{
  public MouseMotionEvents() 
  {
    addMouseListener(this);
    addMouseMotionListener(this);
  }
  
  public void mouseClicked(MouseEvent me) {}
  public void mouseEntered(MouseEvent me) {}
  public void mouseExited(MouseEvent me)  {}
  public void mouseReleased(MouseEvent me){}  
  public void mouseDragged(MouseEvent me) {}    
  public void mousePressed(MouseEvent me) {}
  public void mouseMoved(MouseEvent me)   {System.out.println(me.getX() + ", " + me.getY());}
}

Mein Problem: Ich möchte eine Hintergrundgrafik einbauen, welche sich relativ zu der Maus-Position bewegt, weiß aber nicht, wie ich me.getX() & me.getY() an meine Hauptfunktion übergeben soll...
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
[ot]
Das Thema wurde mal in den richtigen Bereich verschoben.
Bitte verwende in Zukunft
Java:
-Tags, danke! :)
[/ot]
 

Java20134

Bekanntes Mitglied
Naja du schreibst eine Variable, welche man in der ganzen Klasse benutzen kannst.
Schreibe nachdem du die Klasse erstellt hast:
Java:
public class myFrame()
{
     private int mouseX, mouseY; 

     ... --> weitere Anweisungen
}

Und dann kannst du dieser Variablen getX() und getY() übergeben und damit die Koordinaten des Bildes angeben.

Ein weiterer Typ ist, gebe dem JFrame einen sinnvollen Namen!
 
Zuletzt bearbeitet:

fichte77

Neues Mitglied
Hi,

danke für die Antwort - mir geht's aber darum, die Koordinaten aus der Klasse MouseMotionEvents an die Klasse MyFrame zu übergeben.

Ich habe den Code nun so getrennt, das ich mit zwei Dateien arbeiten und beide Klassen als public deklarieren kann:

MyFrame.java:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class MyFrame extends MouseMotionEvents
{
  public int posX;
  public int posY;
  
  public static void main(String[] args)
  { 
    JFrame myFrame = new JFrame();
    JPanel myPanel = new JPanel();
    Container myContainer = myFrame.getContentPane();
    
    myFrame.setSize(800,600);
    myFrame.setLocationRelativeTo(null);
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myFrame.setVisible(true);
    
    myContainer.add(myPanel);
    myContainer.add(new MouseMotionEvents());
  }
}

MouseMotionEvents.java:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseMotionEvents extends JPanel implements MouseListener, MouseMotionListener
{         
  public int posX;
  public int posY;

  public MouseMotionEvents() 
  {
    addMouseListener(this);
    addMouseMotionListener(this);
  }
  
  public void mouseClicked(MouseEvent me) {System.out.println("mouse clicked!") ;}
  public void mouseEntered(MouseEvent me) {System.out.println("mouse entered!") ;}
  public void mouseExited(MouseEvent me)  {System.out.println("mouse exited!")  ;}
  public void mouseReleased(MouseEvent me){System.out.println("mouse released!");}
  public void mouseDragged(MouseEvent me) {System.out.println("mouse dragged!") ;}  
  public void mousePressed(MouseEvent me) {System.out.println("mouse pressed!") ;}
  public void mouseMoved(MouseEvent me)
  {
    posX = me.getX();
    posY = me.getY();
    System.out.println("mouse is at " + posX + ", " + posY);
  }
}

In beiden Klassen will ich auf die zwei int-Werte, posX (me.getX()) und posY (me.getY()) zugreifen können.
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
[ot]
Wie oben schonmal erwähnt: Bitte verwende die
Java:
-Tags und nicht(!) die [CODE]-Tags für deinen JavaCode.
Danke! :)
[/ot]
 

Harry Kane

Top Contributor
Das content pane eines JFrame hat mwn standardmässig ein BorderLayout. Wenn du mehrere Komponenten addest, wird nur die letzte übrigbleiben, in deinem Fall das MouseMotionEvents. Davon hast du noch nix bemerkt, weil das nicht mehr im JFrame befindliche myPanel offenbar nicht als "nicht da"erkannt werden kann.
Ausserdem sieht deine Vererbungshierarchie nicht sinnvoll bzw. ziemlich chaotisch aus:
MouseMotionEvents extends JPanel
MyFrame extends MouseMotionEvents
und dann enthält das content pane deiner myFrame Instanz noch eine weitere MouseMotionEvents Instanz. Sehr merkwürdig. Was würde denn nicht funktionieren, wenn MyFrame NICHT von MouseMotionEvents abgeleitet wäre?
Du kannst dir eine von JPanel abgeleitete Klasse schreiben, die sowhl für das Zeichnen des Hintergrundbildes als auch für das Abfangen der Mouseevents zuständg ist. Das scheint mir die einfachste Lösung zu sein. Deine Klasse MouseMotionEvents scheint in diese Richtung zu gehen, "nur" das Zeichnen des Bildes fehlt noch.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Variablen an eine Form binden? AWT, Swing, JavaFX & SWT 2
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
L Auf Variablen zugreifen AWT, Swing, JavaFX & SWT 6
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
H SWT NullPointerException bei Zugriff auf Variablen des Hauptfensters AWT, Swing, JavaFX & SWT 6
B Variable ist leer / Scope von Variablen AWT, Swing, JavaFX & SWT 2
P non-static variablen benutzen AWT, Swing, JavaFX & SWT 7
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
N Variablen in Events AWT, Swing, JavaFX & SWT 4
M Zugriff auf Variablen eines Objektes ohne sie auf static zu setzen AWT, Swing, JavaFX & SWT 9
C SWT Textfeld mit festem und variablen Inhalt AWT, Swing, JavaFX & SWT 13
O Variablen an anonyme Funktion AWT, Swing, JavaFX & SWT 10
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
hdi Fenster mit variablen Components AWT, Swing, JavaFX & SWT 3
isowiz Wie kann ich Variablen aus einer Innerklasse heraus ändern? AWT, Swing, JavaFX & SWT 5
B Variablen-Namen erfragen AWT, Swing, JavaFX & SWT 5
A problem mit variablen und dialod AWT, Swing, JavaFX & SWT 2
N JLabel o.ä. mit Variablen verknüpfen AWT, Swing, JavaFX & SWT 10
S Wie Variablen Übergabe an Dialog?? AWT, Swing, JavaFX & SWT 2
M variablen uebergabe ?? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben