Guten Mittag liebes Forum,
ich sitze an einer Aufgabe, wo das Ziel ist, ein Fenster (bei mir über JFrame) mit einem Kreis in der Mitte zu haben, welcher sich in die entgegengesetzte Position bewegt, wo man hin klickt. Also wenn ich das Programme starte ist der Kreis in der Mitte. Klicke ich dann unten links in das Fenster, dann soll der Kreis oben rechts erscheinen usw.
Bis jetzt habe ich es geschafft, ein Fenster zu erzeugen, welches einen Kreis in der Mitte darstellt (siehe Anhang) und wenn ich mit der Maus auf dem Fenster rumklicke, dann werden die Positionen in der Konsole ausgegeben.
Mein Problem ist jetzt, das ich die X und Y Werte zwar speichern kann und diese auch versuche der Klasse "Grafik" zu übergeben, wo mein Kreis gezeichnet wird, dieser allerdings nicht an der neuen Position gezeichnet wird. Ich denke hier mangelt es mir an Verständnis, wie die Klasse "Graphics" von Java wirklich funktioniert.
Meine Hauptklasse:
Meine Grafik-Klasse
Bin für jeden Verbesserungs- und Lösungsvorschlag dankbar!
Gruß
iRecordS
ich sitze an einer Aufgabe, wo das Ziel ist, ein Fenster (bei mir über JFrame) mit einem Kreis in der Mitte zu haben, welcher sich in die entgegengesetzte Position bewegt, wo man hin klickt. Also wenn ich das Programme starte ist der Kreis in der Mitte. Klicke ich dann unten links in das Fenster, dann soll der Kreis oben rechts erscheinen usw.
Bis jetzt habe ich es geschafft, ein Fenster zu erzeugen, welches einen Kreis in der Mitte darstellt (siehe Anhang) und wenn ich mit der Maus auf dem Fenster rumklicke, dann werden die Positionen in der Konsole ausgegeben.
Mein Problem ist jetzt, das ich die X und Y Werte zwar speichern kann und diese auch versuche der Klasse "Grafik" zu übergeben, wo mein Kreis gezeichnet wird, dieser allerdings nicht an der neuen Position gezeichnet wird. Ich denke hier mangelt es mir an Verständnis, wie die Klasse "Graphics" von Java wirklich funktioniert.
Meine Hauptklasse:
Code:
package learnFrame;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class Fenster extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
JFrame test = new JFrame();
test.setTitle("Testing Area");
test.setBounds(20, 20, 600, 300);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.add(new Grafik(), BorderLayout.CENTER);
test.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
System.out.println("Maus gedrückt an X = " + x + " und Y = " + y);
test.add(new Grafik(x, y), BorderLayout.CENTER);
}
});
test.setVisible(true);
}
}
Meine Grafik-Klasse
Code:
package learnFrame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import javax.swing.JComponent;
public class Grafik extends JComponent {
private static final long serialVersionUID = 1L;
private int x;
private int y;
public Grafik() {
this.x = 275;
this.y = 100;
}
public Grafik(int x, int y) {
this.x = x;
this.y = y;
}
public void paint(Graphics g) {
Graphics2D graph2 = (Graphics2D)g;
graph2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Shape drawCircle = new Ellipse2D.Float(x, y, 50, 50);
graph2.draw(drawCircle);
}
}
Bin für jeden Verbesserungs- und Lösungsvorschlag dankbar!
Gruß
iRecordS