OOP Zeichenmethode

Alleswirdgut

Mitglied
Hallo liebe Community,

folgendes Problem:
ich soll mehrere Formen erstellen und den User ermöglichen, diese Formen nach Größe und Position beliebig zu ändern.

z.B
Geben Sie ein 1 für Kreis, 2 für Quadrat, 3 für Rechteck, 4 Ellipse, 5 für Polygone
Eingabe: 1
Geben Sie die Position an (x,y)
Eingabe: 200 300
Geben Sie die Größe ein: (h,b)
Eingabe: 100 100
Ausgabe: Kreis (also die Grafik)

Nun bin ich nach mehreren Stunden zu diesem Ergebnis gekommen:

Java:
import java.applet.Applet;import java.util.Scanner;


public class Rechteck extends Applet {


    public static void main(String[] args) {
        Symbole meinSymbol = new Symbole();
        int i;
        Scanner s = new Scanner(System.in);
        System.out.println("Geben Sie ein 1 für Kreis, 2 für Quadrat, 3 für Rechteck, 4 Ellipse, 5 für Polygone ");
        i = s.nextInt();


if (i==1) {


            meinSymbol.kreis();


}else if (i==2){


            
            
            meinSymbol.qudrat();
            




}else if(i==3){
    
            
            
            meinSymbol.rechteck();
            


        
}else if(i==4){
        
            
            meinSymbol.ellipse();
            
    
}else if(i==5){
                
            meinSymbol.polygone();
        }
    }
}


Das ist die 2th Klasse
Java:
import java.awt.Graphics;

public class Symbole {
    public void kreis(Graphics zeichnung) {
        zeichnung.drawArc(200, 200, 100, 100, 0, 360);
    }


    public void qudrat(Graphics zeichnung) {
        zeichnung.drawRect(300, 300, 200, 100);
    }


    public void rechteck(Graphics zeichnung) {
        zeichnung.drawRect(400, 200, 100, 100);
    }


    public void ellipse(Graphics zeichnung) {
        zeichnung.drawOval(400, 500, 100, 50);
    }


    public void polygone(Graphics zeichnung) {
        int xPoly[] = { 150, 250, 325, 375, 450, 275, 100 };
        int yPoly[] = { 150, 100, 125, 225, 250, 375, 300 };
        zeichnung.drawPolyline(xPoly, yPoly, xPoly.length);
    }


    public Symbole() {


    }
}


Ich weiß nicht wie ich es hinkriegen soll, dass die gewünschte Methode aufgerufen wird und wie ich durch new Scanner die Parameter verändern kann in der Methode.
Bitte hilft mir:)
 

InfectedBytes

Top Contributor
Ich gehe mal stark davon aus, dass du passende Klassen für die geometrischen Objekte erstellen sollst:
Java:
public abstract class GeometrischesObjekt {
  public abstract void draw(Graphics g);
}
public class Rechteck extends GeometrischesObjekt {
  public int x,y, w,h;
  public Rechteck(int x, int y, int w, int h) {
    this.x=x;
    this.y=y;
    this.w=w;
    this.h=h;
  }
  public void draw(Graphics g) {
    g.drawRect(x,y,w,h);
  }
}

Dadurch kannst du nun je nach Eingabe ein anderes Objekt zeichnen und außerdem nachträglich die Werte ändern.
 

strußi

Top Contributor
Scanner s =new Scanner( System.in);
system.out.print( "wert für .... eingeben");
s.nextFloat/Int/...(); was auch immer du hast
 

Alleswirdgut

Mitglied
Ich habe in meinem Code schon ein Scanner drin... das Problem liegt bei der Zeile 18,26,36,44 und 49 bei meinSymbol.kreis(); z.B. wird kreis rot angezeigt.
 

InfectedBytes

Top Contributor
das liegt daran, dass es eine Instanzmethode ist. Um die Methode aufzurufen, müsstest du erst eine Objekt erzeugen.
Um ohne Objekt auf die Methode zugreifen zu können, muss sie als static deklariert sein.
 

strußi

Top Contributor
deine abfrage, welcher typ es ist kannst du auch über ein switch case machen,ist etwas übersichtlicher
switch( s.nextInt()){
case1 :
meinSymbol.kreis();
break; ...
 

Alleswirdgut

Mitglied
ich weiß leider nicht wie das funktionier:
public class Symbole {
Graphics zeichnung = new Graphics();
public void kreis() {
zeichnung.drawArc(200, 200, 100, 100, 0, 360);

Er zeigt bei new Graphics Graphics rot an.
 

Neue Themen


Oben