# Probleme beim zeichnen



## bpmman (4. Dez 2006)

hallo zusammen,

ich habe folgendes problem. ich habe ein japplet, in dem ich buttons, labels, menubar und grafiken anzeigen lassen möchte. (die grafik ist von canvas abgeleitet) wenn ich jetzt das applet starte und die menüleiste öffne, dann wird das scrolldownmenu hinter der grafik gezeichnet. wie bekomme ich das menü(alle anderen komponenten) vor die grafik?

gruß frank


----------



## The_S (4. Dez 2006)

Äh, JApplet ist Swing, Canvas ist AWT => daraus schließe ich mal, dass du noch mehr Komponenten aus AWT und Swing gemicht hast. Niemals AWT und Swing msichen.


----------



## VdA (4. Dez 2006)

warum eigentlich was ist das schlimme dadran?


----------



## The_S (4. Dez 2006)

Weil es dadurch zu Darstellungsfehlern kommen kann. Gibt nen super Beitrag dazu in den FAQ 

http://www.java-forum.org/de/viewtopic.php?t=5113


----------



## bpmman (4. Dez 2006)

danke schön für die schnelle antwort...klappt jetzt wunderbar. nur ich habe habe jetzt das prob das die grafiken am flackern sind. ich weiß man muss double buffering verwenden, aber kann mir vielleicht einer ein link posten wo es gut erklärt wird wie man grafiken und komponenten gleichzeitig zeichnet? (allgemein zeichnen und probleme beim zeichnen)


----------



## The_S (4. Dez 2006)

Nen guten Link kenn ich nicht, aber wobei haste denn Probleme? Grundsätzliche vorgehensweiße ist, dass du zuerst alles auf ein BufferedImage zeichnest (mit createGraphics() bekommst du das dazugehörige Graphics-Objekt) und zum Schluss das BufferedImage auf die eigentliche Anzeigefläche zeichnest.


----------



## bpmman (13. Dez 2006)

so das problem mit dem buffering habe ich nun lösen können. und schon steht das nächste prob auf der matte. 

ich benutzte ja ein JApplet und Canvas, sprich SWING und AWT. nun habe ich folgendes problem, damit die swing-komponenten nicht vom canvas überdeckt werden habe ich folgenden befehl eingebaut

JPopupMenu.setDefaultLightWeightPopupEnabled( false );

noch ist alles schön und gut denn bei meiner JMenuBar funktioniert es auch, doch bei meiner JComboBox fängt es schon an da funktionert es nicht nämlich nicht, da das canvas über der box liegt.
wie kann man das problem lösen? oder wie geht man beim zeichnen vor, wenn man auf die swing-komponenten angewiesen ist?(kein canvas? wenn ja, dann sagt mal bitte wie?)

thx schon mal


----------



## Revenant (13. Dez 2006)

Die Canvas Komponente durch JPanel ersetzen.


----------



## The_S (13. Dez 2006)

Und "paint" durch "paintComponent"


----------



## Wildcard (13. Dez 2006)

Revenant hat gesagt.:
			
		

> Die Canvas Komponente durch JPanel ersetzen.


Besser noch JComponent verwenden. Die ist 'leichter' als JPanel.


----------



## bpmman (13. Dez 2006)

also erstelle ich ne neue klasse und leite sie von JPanel ab und da rufe ich in der paint methode paintcomponent auf. und in der paintcomponent zeichne ich halt alles


----------



## The_S (13. Dez 2006)

nein, du überschreibst anstelle der paint methode die paintComponent methode.


----------



## bpmman (13. Dez 2006)

aso alles klar. und in der rufe ich dann 
super.paintComponents(g)
auf, damit die buttons und so angezeigt werden. wenn das falsch ist wäre ein kleines beispiel vielleicht ganz nett.


----------



## Wildcard (13. Dez 2006)

Nein, das ist korrekt.


----------



## Revenant (13. Dez 2006)

jo super.paintComponent(g) (kein s hinten)


----------



## bpmman (14. Dez 2006)

jo klar das meinte ich ja aber thx


----------

