# Applet



## pw04 (6. Nov 2004)

Hallo!

Ich möchte ein Programm machen, welches Autos zeichnet und löscht. Dazu habe ich begonnen folgende Klassenstruktur aufzubauen. Allerdings wird komischer Weise die paint- Routine nicht aufgerufen. Woran liegt das? 

```
import java.applet.Applet;
 import java.awt.*;
 //import java.awt.events.*;
 
 class Auto {
   private int zl;
   private int speed;
   private int zx,zy;
   private Graphics g;
   
   public void init(int px,int py) {
    zx=px; zy=py;
    g.drawString("Hallo!",zx,zy);
   }
   public void zeichne() {

   }
   public void loesche() {

   }
   
 }
 
 class AutoFahren extends Applet {
   private Auto auto;
   public void init() {
    auto = new Auto();
   }
   public void paint(Graphics g) {
    g.drawString("Autos beim fahren!",20,20);
    auto.init(20,40);
    
   }
 }
```


_Edit von L-ectron-X: Code-Tags repariert_


----------



## pw04 (6. Nov 2004)

Ne die paint()- Routine wird jetzt aufgerufen.. ich hatte nur eine falsche Dateibezeichnung..

Die init()- Methode von der Auto-Klasse wird allerdings nicht aufgerufen. Oder es wird kein "Hallo" geschrieben


----------



## Roar (6. Nov 2004)

es wird kein Hello geschrieben weil dein Auto nichtr weißhin er schireben soll. ers kann ja nicht hellsehen. und die graphicsvariable g ist null. Es wird eine nullpointerexception geworfen.
entweder du übergibst deiner init methode dein graphics objekt aus der klasse auto fahren oder du lässt dein Auto von Component ableiten, überschreibst die paint methode und zeichnest dort. dann musst du dein auto auch auf dein appelt hinzufügen mit add()


----------



## pw04 (6. Nov 2004)

Ja danke für die Antwort.. Das Problem wäre dann gelöst. Nun habe ich aber ein weiteres Problem. Bei folgendem Code wird das erste Oval nicht gezeichnet. Woran liegt das??


```
public void zeichne(Graphics g) {
    int h,l;
    h=zl/3;
    g.setColor(Color.black);
    g.fillOval((zx+(5/8*zl)),(zy+h-zl/8),(zl/4),(zl/4));
    g.fillOval((zx+(1/8*zl)),(zy+h-zl/8),(zl/4),(zl/4));
    g.setColor(Color.red);
    g.fillRect(zx,zy,zl,h);
    g.fillRect(zx+zl/2-zl/6,zy-zl/6,zl/3,zl/6);
   }
```

Das Gefährt soll ungefähr so aussehen:
      ------
   --|      |--
   |           |
   |           |
   --O----O-

zl ist die Länge und h die Höhe


----------



## pw04 (7. Nov 2004)

Ja das mit der Aussehensbeschreibung ist etwas komisch geworden. Das kann man hier schlecht skizzieren. Aber ich kapier einfach nicht, warum die beiden Ovale übereinander liegen.. Egal welches der Ovale ich einkommentiere es wird immer nur ein Kreis an der gleichen Stelle gezeichnet:.. ??? ?? ?? ?


----------



## pw04 (7. Nov 2004)

Ich habe diese Zusatzfrage nochmal gepostet, weil der Betreff dieses Themas nicht nicht auf den Inhalt schliessen lässt...


----------

