# Runnable JApplet mit Bild/Ovals "übermalt" Buttons



## deepmessage (28. Dez 2006)

Hallo,

ich bin gerade an einem kleinen Applet dran, das alle 20 Milli-Sekunden neu gezeichnet wird.
Es handelt sich um ein Hintergrundbild und grafischen Elementen, die sich bewegen.
Leider wird ein untenstehender Button immer "übermalt" und er wird nur sichtbar beim Drüberfahren mit der Maus.
Durch Überschreiben der Update-Methode mache ich Buffering, was jedoch nicht hilft (hätte mich auch gewundert...).

Hat mir jemand einen Tipp, wie ich das Problem in den Griff bekomme?
Kann man da eine Unterteilung machen, was die reine Zeichenfläche ist und wo die Swing-Komponeten ihren Platz haben?


** Weiß wirklich keiner weiter?  :cry: 


Gruß
Alex


----------



## André Uhres (28. Dez 2006)

Für das Bild, erweitere JPanel und überschreib paintComponent:

```
class Bild extends JPanel{
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            //hier wird das Bild gemalt
        }
    }
```


----------



## deepmessage (28. Dez 2006)

Danke für Deine Anwort, André.


Meine Klasse erbt von JApplet:


```
public class Test1 extends JApplet implements Runnable
```


Wenn ich dort die Methode paintComponent überschreibe, bringt es mir nichts - die muss ich in paint aufrufen.
Kann man da auch noch was anderes drehen oder muss ich nochmal von vorne anfangen?


Gruß
Alex


----------



## André Uhres (29. Dez 2006)

deepmessage hat gesagt.:
			
		

> ..Kann man da auch noch was anderes drehen..


Du fügst einfach das Bild dem JApplet hinzu:

```
package applets;
/*
 * AppletImageDemo.java
 */
import java.awt.*;
import javax.swing.*;
public class AppletImageDemo extends JApplet {
    private JPanel toolbar;
    public void init() {
        add(new Bild(getImage(getCodeBase(), "1.jpg")));
        toolbar = new JPanel();
        toolbar.add(new JButton("Knopf unter dem Bild"));
        add(toolbar, BorderLayout.SOUTH);
    }
    class Bild extends JPanel{
        private Image img;
        private MediaTracker mt;
        public Bild(Image img){
            this.img = img;
            mt = new MediaTracker(this);
            mt.addImage(img, 0);
            try {
                mt.waitForAll();
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            add(new JButton("Knopf im Bild"));
        }
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            //hier wird das Bild gemalt
            g.drawImage(img,0,0,null);
        }
    }
}
```


----------



## deepmessage (29. Dez 2006)

Danke!

Ich probier's heute Nachmittag gleich aus.   


Alex


----------



## deepmessage (29. Dez 2006)

Alles klar - das funktioniert. Vielen Dank für Deine Hilfe!   

Ich habe die Anleitung unter *klick* befolgt, jedoch wird bei mir das Hintergrundbild nicht angezeigt und es werden keine Sounds abgespielt. Muss ich beim Export der jar-Datei aus Eclipse etwas besonderes einstellen?  ???:L 


Gruß 
Alex


----------



## André Uhres (29. Dez 2006)

Wenn die Bild- und Sounddateien in dem Verzeichnis stehen wo auch die Jardatei ist, dann müsste es eigentlich funzen.


----------

