flaeche 2er schneidender rechtecke

mariusbopp

Bekanntes Mitglied
guten morgen forum
hoffe das ist hier richtig und nicht doppelt...
hab grade ein kleines problem... und zwar habe ich 2 rechtecke welche sich schneiden in der fläche wo sie sich schneiden soll es eine andere farbe bekommen und die koordinaten auf der konsole ausgegeben werden...
problem:die fläche wie bekomme ich raus was die fläche ist an der sie sich schneiden und wie färbe ich es anders??
bisher habe ich:
Java:
package grafik;

import java.awt.*; 
import javax.swing.*;

public class Quadrat extends JPanel {		
public void paintComponent(Graphics g) {
int x=20;
int y=20;
int width=150;
int hight=150;
	
//rechteck 1
Graphics2D g2 = (Graphics2D) g;
g2.setColor(new Color(20, 0, 200));
g2.fillRect(x, y, width, hight);

//rechteck2
Graphics2D g3 = (Graphics2D) g;
g3.setColor(new Color(255, 0, 136));
g3.fillRect(x+125, y+125, width-75, hight-75);
}
public static void main(String[] args) {
Quadrat e = new Quadrat ();

JFrame f = new JFrame();
f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
f.setSize(450, 450);
f.add (e);
f.setVisible (true);
}
}
 
B

Beni

Gast
Schau dir mal die Klasse "java.awt.Rectangle" an. Die Methode "createIntersection" macht ziemlich genau das, was du beschrieben hast.
 

mariusbopp

Bekanntes Mitglied
hey hatte die letzen tage nicht so viel zeit also ich habe volgendes gefunden:
Java:
import java.awt.Graphics;
import java.awt.Rectangle;

import javax.swing.JFrame;

public class intersection extends JFrame {
  Rectangle r = new Rectangle(50, 50, 100, 100);
  Rectangle r1 = new Rectangle(100, 100, 75, 75);

  intersection() {
    super("Intersection");
    setSize(250, 250);
  }

  public void paint(Graphics g) {
    g.drawRect(r.x, r.y, r.width, r.height);
    g.drawRect(r1.x, r1.y, r1.width, r1.height);
    Rectangle r2 = r.intersection(r1);
    System.out.println(r2);
    g.fillRect(r2.x, r2.y, r2.width, r2.height);
  }

  public static void main(String[] args) {
    JFrame f = new intersection();
    f.setVisible(true);
  }
}
macht ja eig genau das was ich brauche bis auf die tatsache das die rechtecke nicht ausgefüllt sind und das frame fenster transparent ist?! ich bekomm es aber nicht hin :(
 
G

Gast2

Gast
bei Swing überschreibt man die paintComponent Methode, nicht die paint().

EDIT:
Außerdem solltest du besser auf nem JPanel zeichnen, dass du dann auf den Frame legst.
 
G

Gast2

Gast
Du lässt deine Klasse von JPanel erben und überschreibst dort die paintComponent() Methode.
Dein neues Panel kannst du dann wie gewohnt auf den Frame legen:
Java:
JFrame frame = new JFrame();
frame.add(new DeinePanelKlasse());
[...]
 

mariusbopp

Bekanntes Mitglied
okay merci :)
ich werde es mal versuchen heute oder morgen:) danach steht das nächste problem an^^ ich muss ein morphing erzeugen ^^ aber erstmal das erste

danke schonmal
 

Ähnliche Java Themen

Neue Themen


Oben