MouseListener - Rechteck Bewegen

GRAZZ0R

Mitglied
Hallo liebe Community 🙂

Ich habe momentan ein Programm, das aus 3 Klassen besteht.

StarteAnwendung -> hier wird das JFrame erstellt
Java:
import javax.swing.JFrame;

public class StarteAnwendung {
    public static void main(String args[]){
       
        JFrame frame = new GUI();
       
        frame.setTitle("Mensch ärger dich nicht - Digital Deluxe Edition");
        frame.setVisible(true);
        frame.setSize(668, 727);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
    }

}

GUI -> Hier wird alles reingeklatscht (vorerst JPanel namens "Malen")
Code:
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

public class GUI extends JFrame implements MouseListener, MouseMotionListener{
   
    public Malen panel;
   
    public GUI(){
        super();
       
        panel = new Malen(300,300);
        add(panel, BorderLayout.CENTER);
   

    }

    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mousePressed(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub
       
    }

   
}

Malen -> Das ist mein JPanel. Hier wird gemalt.
Code:
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class Malen extends JPanel{
   
    int xPos;
    int yPos;
   
    public Malen(int cxPos, int cyPos){
        xPos = cxPos;
        yPos = cyPos;
       
    }
   
    public void run(){       
        while(true){
            repaint();
        }
    }
   
    public void paintComponent(Graphics g){
        g.setColor(Color.BLACK);
        g.fillRect(10+xPos, 10+yPos, 100, 100);
    }

   

}

Weiss jemand, wie ich diesen Rechteck bewegen lassen kann? Ich habe mehrere Codes angeschaut und bin nicht wirklich fündig geworden. Ich habe diese eher nicht so gut verstanden.

Kann mir jemand genau sagen, was ich hier zu machen habe? Wie soll ich es bewerkstelligen, dass beim Klicken auf irgendeinen Punkt beim Rechteck ich das ganze Rechteck bewegen kann?

Ich bin echt entsetzt, da ich ahnungslos verscuhe etwas zu machen.
Ich hoffe auf euere Unterstützung!

P.S.: Ich habe jetzt einen sauberen code hier rein gepostet, da die alten ziemlich "verratzt" sind 🙁
 
Im Grunde lässt man Sachen in Java so bewegen:
Man macht einen Timer, der jede Millisekunden die Variable x um 1 erhöht und y um 2.
In dem Timer rufst du jedes mal repaint() auf.
Ich schreib dir mal eine fertige Methode zum Zeichnen:

Code:
public void paintComponent(Graphics g){
               g.setColor(Color.BLACK);
               g.fillRect(xPos, yPos, 100 ,100);
        }
          Timer t = new Timer(1, new ActionListener() {
              
               @Override
               public void actionPerformed(ActionEvent e) {
                
                 xPos = xPos+1;
                 yPos=yPos+1;
                 repaint();
               }
             });
        t.start();

 

Zurück
Oben