Hey,
ich habe in der Uni ne Aufgabe bekommen, bei der ich verschiedene Grafiken als Panel auf einem Frame darstellen soll. Leider wird bei meinem Codeentwurf immer das vorherige Panel überschrieben. Ich sitze jetzt schon mehrere Stunden an einer Lösung, aber auch die Suchfunktion hat keine Abhilfe geschaffen.
Hier mein abgespeckter Code:
Dazu noch die Figur:
Wäre super cool, wenn mir jemand nen Tipp geben könnte, wie ich dieses Problem lösen kann.
Vielen Dank.
ich habe in der Uni ne Aufgabe bekommen, bei der ich verschiedene Grafiken als Panel auf einem Frame darstellen soll. Leider wird bei meinem Codeentwurf immer das vorherige Panel überschrieben. Ich sitze jetzt schon mehrere Stunden an einer Lösung, aber auch die Suchfunktion hat keine Abhilfe geschaffen.
Hier mein abgespeckter Code:
Java:
class AWTFigur extends Panel {
Figur f;
AWTFigur (Figur f)
{
this.f=f;
}
public void paint(Graphics g)
{
f.paint(g);
}
public Dimension getPreferredSize()
{
return new Dimension (f.getWidth()+2, f.getHeight()+2);
}
public static void main(String[] args) {
//Frame
Frame F=new Frame("Ulululu");
F.setLayout(new FlowLayout());
F.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we){System.exit(0);}});
AWTFigur P1=new AWTFigur(new Quadrat(100));
AWTFigur P2=new AWTFigur(new Kreis(100));
AWTFigur P3=new AWTFigur (new Rechteck(100, 200));
F.add(P1);
F.add(P2);
F.add(P3);
F.pack();
F.setVisible(true);
}
}
Dazu noch die Figur:
Java:
public class Figur {
protected int laenge;
protected int hoehe;
public double getCirumference() {return 0;}
public double getArea() {return 0;}
public int getHeight() {return 0;}
public int getWidth() {return 0;}
public void paint(Graphics g){
//g.fillRect(10, 10, 100, 100);
};
//Konstruktor
public Figur()
{
hoehe=0;
laenge=0;
}
//setter
public void setWidth(int laenge)
{
this.laenge=laenge;
}
public void setHeight(int hoehe)
{
this.hoehe=hoehe;
}
}
class Quadrat extends Figur {
public Quadrat ()
{
this.laenge=0;
}
public Quadrat (int laenge)
{
this.laenge=laenge;
}
public double getCircumference()
{
double flaeche;
flaeche=laenge*laenge;
return flaeche;
}
public double getArea()
{
double umfang;
umfang=4*laenge;
return umfang;
}
public int getHeight()
{
return hoehe;
}
public int getWidth()
{
return laenge;
}
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.drawRect(10, 10, laenge, laenge);
}
}
class Rechteck extends Figur{
public Rechteck()
{
this.laenge=0;
this.hoehe=0;
}
public Rechteck(int laenge, int hoehe)
{
this.laenge=laenge;
this.hoehe=hoehe;
}
public double getCircumference()
{
double flaeche;
flaeche=hoehe*laenge;
return flaeche;
}
public double getArea(){
double umfang;
umfang=2*hoehe+2*laenge;
return umfang;
}
public int getHeight(){
return hoehe;
}
public int getWidth()
{
return laenge;
}
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.drawRect(100, 400, laenge, hoehe);
}
}
class Kreis extends Figur{
protected int radius;
public Kreis ()
{
this.radius=0;
}
public Kreis (int radius)
{
this.radius=radius;
}
public double getCircumference()
{
double flaeche;
flaeche=Math.PI*(Math.pow(hoehe, 2));
return flaeche;
}
public double getArea()
{
double umfang;
umfang=2*Math.PI*hoehe;
return umfang;
}
public int getHeight()
{
return radius;
}
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.drawArc(200, 10, radius, radius, 0, 360)
}
}
Wäre super cool, wenn mir jemand nen Tipp geben könnte, wie ich dieses Problem lösen kann.
Vielen Dank.
Zuletzt bearbeitet von einem Moderator: