Daniel Thoma: canvas in JFrame

Beitrag lesen

Hallo Èner,

Du machst gleich mehrere Dinge grundlegend falsch.

Um eine eigene Komponente zu schreiben, solltest Du Dich mit der Funktionsweise von Swing etwas beschäftigen. Wenn Du irgend etwas zeichen willst, musst Du eine eigene Komponente schreiben, indem Du bspw. von JComponent ableitest und eine der paint-Methoden überschreibst.
Guter Einstiegspunkt dazu: < http://java.sun.com/docs/books/tutorial/uiswing/painting/index.html>
Du hättest gerne eine Komponente, in die Du etwas "hineinzeichnen" kannst und die das eigentliche Zeichnen dann selber organisiert. So funktionieren GUI-Bibliotheken aber nicht und Swing bietet das auch nicht an. Es gibt zwar auch Bibliotheken, die so etwas können (Eine SVG-Implementierung oder Scenegraph-Bibliotheken), für eine einfache Komponente ist das aber übertrieben. Außerdem solltest Du die Grundlagen erstmal so verstehen.

Der nächste Fehler ist, dass Du AWT-Komponenten (Canvas) und Swing mischst. Das kann man tun und es gibt auch manchmal Gründe dafür, aber normalerweise macht es nur Ärger. Wenn Du nicht weißt, warum Du es tust, lass es bleiben. Eigene Komponenten leitet man wie gesagt von JComponent ab, der Name der Klasse Canvas mag verlockend klingen, aber sie bietet nur eine Basis für AWT-Komponenten.

Letzer Fehler:
Du hast einen Haufen, auch noch automatisch generierten Code gepostet. Versuche so etwas zu vermeiden und zu kürzen, das schreckt ab und wenn ich den Fehler nicht schon beim Stichwort "Canvas" geahnt hätte, hätte ich mich bestimmt nicht weiter darum gekümmert.

Lass Dich nicht entmutigen, im Grunde ist das nicht so kompliziert, man muss nur erstmal verstehen, dass man nicht auf Komponenten zeichnet sondern sich Komponenten selbst zeichnen.

Grüße

Daniel