Java 2D

der Prof

Mitglied
Hallo Menschen,

Java:
package view;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.GeneralPath;

import javax.swing.JFrame;

public class View extends JFrame {

	private int zaehler = 100;

	private boolean bool;

	public void paint(Graphics g) {

		Color color;
		MouseListener mouseListener;

		final GeneralPath path = new GeneralPath();
		
		Graphics2D g2 = (Graphics2D) g;

		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);

		g2.setColor(Color.BLUE);
		zaehler = zaehler + 2;
		g2.drawOval(50, zaehler, 50, 50);
		g2.fillOval(50, zaehler, 50, 50);
		
		setSleep();
		g2.clearRect(50, zaehler, 55, 55);
		repaint();

		addMouseListener(new MouseListener() {

                    public void mouseClicked(MouseEvent me) {

//			    System.out.println(bool = path.contains(me.getPoint()));		

		    }
			
		});

	}

	public static void setSleep() {

		try {
			Thread.sleep(50);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {

		JFrame frame = new View();

		frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
		frame.setSize(800, 600);
		frame.setLocation(200, 200);
		frame.setVisible(true);

	}
}

Wenn der blaue Kreis "geklickt" wird soll "true" zuerueck geliefert werden.

Irgendwie hat Graphics2D nich die passende methode..

könnt ihr mir helfen?

MfG
 
Zuletzt bearbeitet:
Hallo,

also erstmal solltest du nicht den MouseListener in der paint-Methode hinzufügen. So wird bei jedem repaint ein neuer Listener hinzugefügt.

Ist auch normal das Graphics2D nicht die richtige Methode enthält. Die Klasse ist schließlich auch nur zum zeichnen da und nicht um irgendwelche Events auszuführen.

Das einzige was mit jetzt mal einfallen würde um dein Problem zu lösen wäre, dass du die Position und die Größe des Kreises in einem Rectangle-Object speicherst. Da kannst du dann mit contains dann prüfen, ob der Punkt enthalten ist.

MFG

Sascha
 
Hallo,

danke für die Antwort // ich wollte dat spaeter machen..

erstma MVC

Java:
/**
 * 
 */
package main;

import controller.Listener;


/**
 * @author prof
 *
 */
public class Main {
	
	public Main() {
		
		
	}

	public static void main(String[] args) {
		
		controller.Listener object = new Listener();
		object.getClass();
		
	}
}

Java:
/**
 * 
 */
package model;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

/**
 * @author prof
 * 
 */
public class Punkt extends javax.swing.JFrame {

	private int zaehler;

	private Color color;

	private Graphics2D graphics2D;

	/**
	 * @param Konstruktor
	 */
	public Punkt() {

	}

	public int getZaehler() {

		return zaehler;
	}

	/**
	 * 
	 */
	public void paint(Graphics graphics) {

		this.graphics2D = (Graphics2D) graphics;

		graphics2D.setColor(color.BLUE);
		graphics2D.drawOval(50, 100, 50, 50);
		graphics2D.fillOval(50, 100, 50, 50);
	}
}

Java:
/**
 * 
 */
package view;


/**
 * @author prof
 * 
 */
public class MasterFrame extends model.Punkt {

	public MasterFrame() {

		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(640, 480);
		setLocation(320, 240);
		setVisible(true);
		
	}
}

Java:
/**
 * 
 */
package controller;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * @author prof
 * 
 */
public class Listener extends view.MasterFrame {


	public Listener() {


		addMouseListener(new MouseListener() {

			public void mouseClicked(MouseEvent me) {
				
				System.out.println(me.getPoint());
				
			}

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

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

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

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

ich hoffe, ich hab dat richtig verstanden..

MfG

P.S: Coming Soon
 
Zuletzt bearbeitet:
Zurück