# Steuerelemente



## Turtle28 (16. Mrz 2005)

Ich habe 2Dateien, malen.java enthält das Applet und Turtle.java den Rest.

*malen.java*

```
public class malen extends Applet
                   
{
        Turtle t;
        
        public void init()
        {
                t=new Turtle(this,200,200,0);
		t.interaktiv();  
                
        }      
}
```

*Turtle.java*

```
class Turtle 
{
        protected int posX = 10,
                   posY = 10,
                   winkel;
            
        protected Button malenB = new Button("Drueck mich");
               
        protected Graphics g; 
        
        protected Container c;
        
        public Turtle(Container cont)
        {
                this(cont, 0, 0, 0);
        }
        
        public Turtle(Container cont, int x, int y, int richtung)
        {       
                posX = x;
                posY = y;
                winkel = richtung;
                g=c.getGraphics();
                c=cont;
        }
        
        public void vor()
        {
                g.drawLine(posX, posY, 20, 20); 
                
        }
        
        public void interaktiv()
        {
                c.setBackground(Color.red); 
                Aktionen a = new Aktionen();
                malenB.addActionListener(a);
                c.add(malenB);
        }
        
        class Aktionen implements ActionListener
        {
                public void actionPerformed(ActionEvent e)
                {
                        Object quelle = e.getSource();
                        if(quelle == malenB)
                        {
                                vor();
                        }
                }
        }
}
```
Wenn ich das Applet starte wird nichts angezeigt! Woran könnte das liegen???


----------



## dotlens (16. Mrz 2005)

überschreibe die paint() methode im Applet. ansonsten wird nichts angezeigt.
deine Zusatzklasse macht nicht allzu viel sinn.
Kannst probieren t.interaktiv(); in der paint() methode aufzurufen...


----------



## Sky (16. Mrz 2005)

Sie Zeile 21ff.


```
class Turtle {  
  protected int posX = 10,
                posY = 10,
                winkel;
           
  protected Button malenB = new Button("Drueck mich");
               
  protected Graphics g;
       
  protected Container c;
       
  public Turtle(Container cont) {
    this(cont, 0, 0, 0);
  }
       
  public Turtle(Container cont, int x, int y, int richtung) {
    posX = x;
    posY = y;
    winkel = richtung;
    // die beiden folgenden Zeilen habe ich in der Reihenfolge
    // geändert, da 'c' ansonsten immer NULL ist.
    c=cont;
    g=c.getGraphics();
  }
       
  public void vor() {
    g.drawLine(posX, posY, 20, 20);
  }
       
  public void interaktiv() {
    c.setBackground(Color.red);
    Aktionen a = new Aktionen();
    malenB.addActionListener(a);
    c.add(malenB);
  }
       
  class Aktionen implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      Object quelle = e.getSource();
      if(quelle == malenB) {
        vor();
      }
    }
  }
}
```


----------



## Sky (16. Mrz 2005)

dotlens hat gesagt.:
			
		

> überschreibe die paint() methode im Applet. ansonsten wird nichts angezeigt.


Das ist in diesem Fall nicht nötig. Der übergebene Parameter *Container cont* enthält den Graphics, der im folgenden Code verwendet wird; dadurch ist eine Anzeige sehr wohl möglich.


----------

