Ich will MouseMotionListener implementieren, doch irgendwie klappt das ncith so richtig! Ich habe es jetzt hier nochmal in der anderen Form (die die funktioniert) gepostet. Doch ich will halt
als Funktionen von test05 durch Implementierung!
Code:
public void mouseDragged(MouseEvent arg0) {
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
public void mouseMoved(MouseEvent arg0) {
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
als Funktionen von test05 durch Implementierung!
Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Shape;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test05 extends JPanel {
static int x = 0, y = 0;
static test05 gpanel = new test05();;
protected void paintComponent(Graphics g) {
int breite = getWidth();
int hoch = getHeight();
int mittex = breite / 2, mittey = hoch / 2;
double ab = Math.pow(Math.pow(x-mittex,2) + Math.pow(y-mittey,2), 0.5);
Shape wrechteck = new Rectangle2D.Double(0, 0, breite, hoch);
g.setColor(Color.WHITE);
((Graphics2D) g).fill(wrechteck);
Shape kreis = new Ellipse2D.Double(mittex-ab, mittey-ab, 2 * ab, 2 * ab);
Shape kreis2 = new Ellipse2D.Double(x-7, y-7, 14, 14);
Shape kreis3 = new Ellipse2D.Double((mittex-ab)-7, mittey-7, 14, 14);
Shape kreis4 = new Ellipse2D.Double((mittex+ab)-7, mittey-7, 14, 14);
Shape linie1 = new Line2D.Double(mittex-ab, mittey, mittex+ab, mittey);
Shape linie2 = new Line2D.Double(mittex-ab, mittey, x, y);
Shape linie3 = new Line2D.Double(x, y, mittex+ab, mittey);
g.setColor(Color.BLACK);
((Graphics2D) g).draw(kreis);
((Graphics2D) g).draw(kreis2);
((Graphics2D) g).draw(kreis3);
((Graphics2D) g).draw(kreis4);
((Graphics2D) g).draw(linie1);
((Graphics2D) g).draw(linie2);
((Graphics2D) g).draw(linie3);
}
public static void main(String args[]) {
JFrame f = new JFrame("Kreis");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500, 500);
Container con = f.getContentPane();
con.setLayout(new GridLayout(0, 1, 0, 0));
con.add(gpanel);
f.setVisible(true);
gpanel.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent arg0) {
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
public void mouseMoved(MouseEvent arg0) {
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
});
}
}