G
Gelöschtes Mitglied 2635
Gast
Hallo zusammen,
im Rahmen einer Übung brauche ich gerade Hilfe für ein erstes "komplexeres" Programm. Es geht darum eine Menge von Figuren zu zeichnen. Später soll man die Figuren auswählen können, Daten dazu anzeigen können, verschieben, Größe ändern etc. . Später.
Mein Problem besteht gerade darin, dass ich das Array mit den Figuren (Drawing.java) nicht ausgegeben bekomme (TDrawing.java).
Für Hilfe wäre ich sehr dankbar.
Schöne Grüße, Der Tino.
Hauptprogramm:
Drawing.java mit dem Array der Figuren
Abstrakte Klasse, die die Figuren definiert
Ausgestalte Klasse Circle.java
im Rahmen einer Übung brauche ich gerade Hilfe für ein erstes "komplexeres" Programm. Es geht darum eine Menge von Figuren zu zeichnen. Später soll man die Figuren auswählen können, Daten dazu anzeigen können, verschieben, Größe ändern etc. . Später.
Mein Problem besteht gerade darin, dass ich das Array mit den Figuren (Drawing.java) nicht ausgegeben bekomme (TDrawing.java).
Für Hilfe wäre ich sehr dankbar.
Schöne Grüße, Der Tino.
Hauptprogramm:
Code:
import java.awt.*;
import java.awt.event.*;
public class TDrawing
extends Frame
implements ActionListener, WindowListener {
private Label circumference;
private Label area;
private TextField index;
private TextField radius;
private Drawing drawing;
public TDrawing() {
// Fenster einrichten
Frame wnd = new Frame("TDrawing");
wnd.setSize(640,480);
wnd.setVisible(true);
wnd.setBackground(Color.WHITE);
wnd.addWindowListener(this);
// Panel 1 einrichten
Panel graphics = new Panel();
graphics.setLayout(new FlowLayout());
// Panel 2 einrichten
Panel menu = new Panel();
menu.setLayout(new FlowLayout());
menu.setBackground(Color.LIGHT_GRAY);
menu.add(new Label("Index: "));
index = new TextField();
menu.add(index);
menu.add(new Label("Radius: "));
radius = new TextField();
menu.add(radius);
menu.add(new Button("OK"));
menu.add(new Label("Umfang: "));
circumference = new Label();
menu.add(circumference);
menu.add(new Label("Flaeche: "));
area = new Label();
menu.add(area);
// Panels zusammenfügen
wnd.setLayout(new BorderLayout());
wnd.add(graphics, BorderLayout.NORTH);
wnd.add(menu, BorderLayout.SOUTH);
wnd.pack();
}
public void paint(Graphics g) {
drawing = new Drawing();
drawing.draw(g);
// HIER MUSS IRGENDWO DAS PROBLEM LIEGEN
// WIESO GIBT ER MIR DIE FIGUREN NICHT AUS ???
}
public void actionPerformed(ActionEvent event) {
}
public void windowDeactivated(WindowEvent event) {
}
public void windowOpened(WindowEvent event) {
}
public void windowDeiconified(WindowEvent event) {
}
public void windowClosed(WindowEvent event) {
}
public void windowClosing(WindowEvent event) {
setVisible(false);
dispose();
System.exit(0);
}
public void windowActivated(WindowEvent event) {
}
public void windowIconified(WindowEvent event) {
}
public static void main(String args[]) {
TDrawing test = new TDrawing();
}
}
Drawing.java mit dem Array der Figuren
Code:
import java.awt.*;
public class Drawing {
public AbstrFigure[] shapes;
public final int maxshapes = 3;
public Drawing() {
Circle c = new Circle(50,50,100,Color.CYAN,Color.BLUE);
Square s = new Square(200,50,100,Color.BLACK,Color.GRAY);
Rectangle r = new Rectangle(50,200,100,200,Color.GREEN,Color.YELLOW);
shapes = new AbstrFigure[maxshapes];
shapes[0] = c;
shapes[1] = s;
shapes[2] = r;
}
public void show() {
for (int i = 0; i < maxshapes; i++) shapes[i].show();
}
public void draw(Graphics g) {
for (int i = 0; i < maxshapes; i++) shapes[i].draw(g);
}
public static void main(String args[]) {
/** Test der Klasse */
Drawing test = new Drawing();
test.show();
}
}
Abstrakte Klasse, die die Figuren definiert
Code:
import java.awt.*;
abstract class AbstrFigure {
public final double PI = 3.141592;
protected double a,b,x,y;
protected Color fillColor,lineColor;
public void setPos (double x, double y) {
/** Methode zur Aenderung der Position*/
this.x = x;
this.y = y;
}
public void setDim(double a, double b) {
/** Methode zur Aenderung der Groesse*/
this.a = a;
this.b = b;
}
public void setColors(Color fC, Color lC) {
/** Methode zur Aenderung der Farben fuer Flaeche und Kontur*/
fillColor = fC;
lineColor = lC;
}
public double getX() {
/** Methode zur Rueckgabe von x */
return x;
}
public double getY() {
/** Methode zur Rueckgabe von y */
return y;
}
public double getA() {
/** Methode zur Rueckgabe von a */
return a;
}
public double getB() {
/** Methode zur Rueckgabe des Radius */
return b;
}
public String getColors() {
/** Methode zur Rueckgabe der Farben */
return ("fC: "+fillColor+" lC: "+lineColor);
}
abstract public void show();
/** abstrakte Methode zur Ausgabe der Daten der Figur */
abstract public double circumference();
/** abstrakte Methode zur Bestimmung des Umfangs */
abstract public double area();
/** abstrakte Methode zur Bestimmung der Flaeche */
abstract public void draw(Graphics g);
/** abstrakte Methode zur Zeichnung der Figur */
}
Ausgestalte Klasse Circle.java
Code:
import java.awt.*;
public class Circle extends AbstrFigure {
public Circle() {
/** Konstruktor */
}
public Circle(double x, double y, double a) {
/** Konstruktor */
this.x = x;
this.y = y;
this.a = a;
}
public Circle(double x, double y, double a, Color fC, Color lC) {
/** Konstruktor */
this.x = x;
this.y = y;
this.a = a;
this.fillColor = fC;
this.lineColor = lC;
}
public double circumference() {
/** Berechnung des Umfangs (2*p*r) */
return 2*PI*a;
}
public double area() {
/** Berechnung der Kreisflaeche (p*r2) */
return PI*a*a;
}
public void show() {
/** Ausgabe des Radius‘, des Umfangs und der Flaeche auf die Konsole */
System.out.println("Radius: "+a);
System.out.println("Umfang: "+circumference());
System.out.println("Flaeche: "+area());
}
public void draw(Graphics g) {
/** Zeichnung der Figur */
g.setColor(fillColor);
g.fillOval((int)x,(int)y,(int)a,(int)a);
g.setColor(lineColor);
g.drawOval((int)x,(int)y,(int)a,(int)a);
}
}