D
DarkKnight44300
Gast
Hallo zusammen,
ich versuche mir momentan im Zusammenhang mit meinem Studium die Java-Programmierung selbst bei zu bringen.
Lieder verfüge ich über keinerlei Vorkenntnisse, also habe ich mir das Buch Java für Dummies besorgt. Im 4. Kapitel soll man ein Applet schreiben das unterschiedliche Shapes in einem Label wiedergibt. Ich vermute der Quellcode sieht etwas unüblich aus, weil das gesamte Applet mit seinen unterklassen in einer Klasse geschrieben wurde. Im Buch steht das wäre am Anfang leichter.
So nun zu meinem Problem:
Eclipse zeigt mir eigentlich keine wirklichen Fehler mehr an (oder ich bin zu blöd es zu merken). Aber wenn ich das Applet ausführe wird alles gezeichnet bis auf den Circle. Dessen umfang und Flächen Inhalt wird jedoch berechnet. hier der Code
Vielleicht könnt ihr mir ja helfen.
Schon mal Danke im Voraus.
ich versuche mir momentan im Zusammenhang mit meinem Studium die Java-Programmierung selbst bei zu bringen.
Lieder verfüge ich über keinerlei Vorkenntnisse, also habe ich mir das Buch Java für Dummies besorgt. Im 4. Kapitel soll man ein Applet schreiben das unterschiedliche Shapes in einem Label wiedergibt. Ich vermute der Quellcode sieht etwas unüblich aus, weil das gesamte Applet mit seinen unterklassen in einer Klasse geschrieben wurde. Im Buch steht das wäre am Anfang leichter.
So nun zu meinem Problem:
Eclipse zeigt mir eigentlich keine wirklichen Fehler mehr an (oder ich bin zu blöd es zu merken). Aber wenn ich das Applet ausführe wird alles gezeichnet bis auf den Circle. Dessen umfang und Flächen Inhalt wird jedoch berechnet. hier der Code
Java:
import java.applet.Applet;
import java.awt.*;
/** Shapes - Ein Applet zum kennenlernen von Vererbungen.
* @version 0.1, 24.11.2010
* @author Felix
*/
public class ShapeApplet extends Applet {
public void init(){
Rectgl r = new Rectgl(10,5, Color.red);
Square s = new Square(10, Color.blue);
Circle c = new Circle(20, Color.yellow);
Square s2 = new Square(40, Color.green);
add(r);
add(s);
add(c);
add(s2);
add(new ShapeLabel(r));
add(new ShapeLabel(s));
add(new ShapeLabel(c));
add(new ShapeLabel(s2));
}
}
class Rectgl extends Shape {
/* Konstruktor */
public Rectgl(int width, int height, Color c) {
myDimension.width = width;
myDimension.height = height;
setColor(c);
}
/* Shape Zeichnen */
public void paint(Graphics g) {
g.fillRect(0, 0, myDimension.width, myDimension.height);
}
/* Größe des Shapes bestimmen */
public double getArea() {
return myDimension.width * myDimension.height;
}
/* Umfang des Shapes bestimmen */
public double getPerimeter() {
return (myDimension.width + myDimension.height) * 2;
}
/* Sting zur Bezeichnung des Shapes ausgeben*/
public String getKind () {
return "Rectangle";
}
}
class Square extends Rectgl {
/* Konstruktor*/
public Square(int side, Color c) {
super(side, side, c);
}
/* Sting zur Bezeichnung des Shapes ausgeben*/
public String getKind () {
return "Square";
}
}
abstract class Shape extends Canvas {
Dimension dimension_ = new Dimension();
Dimension myDimension = new Dimension();
public void Shape() {
}
public Color getColor() {
return getForeground();
}
public void setColor(Color c) {
setForeground(c);
}
public void paint(Graphics g) {
}
public double getArea() {
return 0;
}
public double getPerimeter() {
return 0;
}
public String getKind() {
return "unknown Shape";
}
public Dimension preferredSize() {
return myDimension;
}
public Dimension minimumSize() {
return myDimension;
}
}
class ShapeLabel extends TextArea {
public ShapeLabel(Shape s) {
super("Ich bin ein " + s.getKind()+
"/n Mein Umfang betraegt " + Double.toString(s.getPerimeter())+
"/n Meine Fläche betraegt " + Double.toString(s.getArea()));
}
}
class Circle extends Shape{
private int radius_;
/* Konstruktor */
public Circle(int radius, Color c) {
radius_ = radius;
dimension_.width = dimension_.height = 2 * radius;
setColor(c);
}
/* Shape Zeichnen */
public void paint(Graphics g) {
g.fillArc(0, 0,(2*radius_),(2*radius_), 0, 360);
}
/* Groesse des Shapes bestimmen */
public double getArea() {
return Math.PI * (radius_ * radius_);
}
/* Umfang des Shapes bestimmen */
public double getPerimeter() {
return 2 * Math.PI * radius_;
}
public String getKind () {
return "Circle";
}
}
Vielleicht könnt ihr mir ja helfen.
Schon mal Danke im Voraus.