[resolvido] Como fazer intersecção entre 2 figuras (gráficos 2d)?

Galera, eu tenho esse arquivo nomeado exercicio1_aula1, e eu tenho que fazer algumas operações com um círculo e um retângulo, mas eu não sei como fazer isso. O meu professor apenas nos passou o seguinte, mas sem nenhum exemplo de código:

[code]Primitivas em Java 2D

  • Area:
    classe que permite algumas operações
    entre primitivas.
  • Area a = new Area (Shape s)
  • areaA.add(areaB)
  • areaA.intersect(areaB)
  • areaA.subtract(areaB)
  • areaA.exclusiveOr(areaB)
    [/code]

Eu apenas consegui desenhar as figuras,mas não fazer as operações. O meu código é o seguinte:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JFrame;

public class exercicio1_aula1 extends JFrame{
	public exercicio1_aula1(){}
	
	public void paint(Graphics g) {
		Graphics2D g2d = (Graphics2D)g;
		
		g2d.setColor(new Color(160, 0, 0));
		g2d.drawString("Retângulo", 300, 40);
		Rectangle2D.Double retangulo = new Rectangle2D.Double(300, 50, 100, 100);
		g2d.fill(retangulo);
		
		g2d.setColor(new Color(0, 160, 0));
		g2d.drawString("Círculo", 100, 40);
		Ellipse2D.Double circulo = new Ellipse2D.Double(100, 50, 100, 100);
		g2d.fill(circulo);
	}
	
	public static void main(String args[]) {
		exercicio1_aula1 f = new exercicio1_aula1();
		f.setTitle("Aula 1, Exercício 1");
		f.setSize(768, 768);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setVisible(true);
		
	}
}

Procure por AlphaComposite.

Olha, nessa versão do código, as figuras estão sobrepostas e eu importei a biblioteca Area importada e 2 instâncias de Area gerados. Agora só preciso fazer uma operação com isso(um XOR, por exemplo):

[code]import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Area;

import javax.swing.JFrame;

public class exercicio1_aula1 extends JFrame{
public exercicio1_aula1(){}

public void paint(Graphics g) {
	Graphics2D g2d = (Graphics2D)g;
	
	g2d.setColor(new Color(160, 0, 0));
	g2d.drawString("Retângulo", 150, 40);
	Rectangle2D.Double retangulo = new Rectangle2D.Double(150, 50, 100, 100);
	g2d.fill(retangulo);
	
	g2d.setColor(new Color(0, 160, 0));
	g2d.drawString("Círculo", 100, 40);
	Ellipse2D.Double circulo = new Ellipse2D.Double(100, 50, 100, 100);
	g2d.fill(circulo);
	

	Area a = new Area(/*o que vem aqui dentro?*/);
	Area b = new Area(/*e aqui dentro?*/);
	a.exclusiveOr(b);
}

public static void main(String args[]) {
	exercicio1_aula1 f = new exercicio1_aula1();
	f.setTitle("Aula 1, Exercício 1");
	f.setSize(800, 600);
	f.setDefaultCloseOperation(EXIT_ON_CLOSE); //pára o programa(e a máquina virtual) quando clicar no botão "X" da janela
	f.setVisible(true);
	
}

}[/code]

Opa, finalmente consegui usar os métodos da classe! Obrigado pela ajuda, galera! Problema resolvido. Consegui usar os 4 principais métodos para fazer operações com os gráficos.