SWT[1]#3

Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

SWT[1]#3

Beitrag von salami »

Hallo,
habe in der Mailinglist gelesen, dass es Probleme mit "Aussetzer" beim Zeichnen gibt. Ich hoffe die Leute mit dem Problem lesen hier mit. ;)

Das Problem ist: Wenn man die Maus bewegt, bewegt sie sich nicht Pixel für Pixel, sondern überspringt gleich mehrere Pixel. Je danach wie schnell man die Maus bewegt sind das mehr oder weniger.
Wenn man jetzt bei Mausbewegungen einen Punkt an die Mausposition zeichnet, sieht man dann eben Lücken in der Linie, da das Event nicht auf jedem Pixel zwischen den Punkten ausgeführt wird.

Um das Problem zu beheben, muss man einfach bei jeder Bewegung eine Linie (drawLine) zwischen dem aktuellen und dem letzten Punkt ziehen.

Wie man das macht kann man sich selbst überlegen. ;)
Romeo
Beiträge: 50
Registriert: Fr 19. Dez 2008, 20:24

Re: SWT[1]#3

Beitrag von Romeo »

Hallo,

Ich arbeite gerade an der Aufgabe und verwende zum Zeichnen Graphics2D.

Leider bin ich nicht sehr bewandert in Swing und so kam mein Problem:

Ich öffne einen JColorChooser, der sich standardmäßig etwas über dem JPanel positioniert, auf welchem ich zeichne. Leider setzt Java dabei an diesen Stellen das Panel zurück, so dass dort nur Hintergrund übrig bleibt...

Kann mir jemand sagen, warum das so ist und wie ich das am besten beheben kann?

Grüße
Roland
Benutzeravatar
salami
Beiträge: 179
Registriert: Mi 5. Nov 2008, 22:41
Wohnort: Karlsruhe

Re: SWT[1]#3

Beitrag von salami »

Wenn du zeichnest, dann zeichne nicht direkt auf das Panel, sonst wird es gelöscht, wenn du etwas drüberschiebst oder das Fenster minimierst.

Zeichne in ein Bild im Speicher (z.B. Image oder BufferedImage) und überschreibe die paint-Funktion vom Panel, auf dem es angezeigt wird. In der paint-Funktion zeichnest/kopierst du dann einfach das "interne" Bild auf das Panel.

Ich finde die Aufgabe übrigens ziemlich schwierig dafür, dass es erst das erste Übungsblatt ist. Ich habe das aber schon in der Schule gemacht, weshalb es dann noch ganz schnell ging. ;)
Gibts in SWT auch Abschlussaufgaben? Was wird da erwartet, Crysis?
ryo
Beiträge: 143
Registriert: So 16. Nov 2008, 18:51

Re: SWT[1]#3

Beitrag von ryo »

Hehe, Crysis wird da ein Witz dagegen sein.

Erlich gesagt finde ich die Aufgabe nicht so toll. In Programmieren hätten wir hier erst einmal in einer Vorlesung gezeigt bekommen, wie so etwas auszusehen hätte, also an mehreren Beispielen mit verschiedenen unterframes und so. Und außerdem hätte es noch ein Tutorium gegeben, in dem man das ganze nochmal durchgekaut hätte.
Hier müssen wir uns alles mühsam selbst zusammensuchen. Und das Tutorial auf sun fand ich jetzt auch nicht soo den Reiser. Von daher kämpfe ich mich als Mensch, der noch nie mit Swing gearbeitet hat, mühsam durch die Matierie. Und mal ganz im Ernst: Das ist keine anspruchsvolle Progammierarbeit. Das ist mühsames zusammenklabustern von Fenstern, Buttons und so. Denkarbeit gibts hier nicht so viel.

Irgendwie finde ich das erste Übungsblatt als ganzes etwas übertrieben. Nur eine Woche Zeit. Dann das Pflichtenheft - 5 Seiten! Wie soll das denn gehen [Bei mir werden es wohl 2 - 3]? Und im Prinzip muss man sich ja alles irgendwie aus den Fingern ziehen.
Beim Anwendungsfalldiagramm steig ich auch noch nicht ganz durch, da hier bei mir praktisch was ziemlich ähnliches rauskommt wie das, was der Gute in der Vorlesung gezeigt hat- was wohl kaum Sinn und Zweck der Aufgabe sein wird. Mach ich da was falsch bzw "faktorisiere" ich zu viel heraus??
Romeo
Beiträge: 50
Registriert: Fr 19. Dez 2008, 20:24

Re: SWT[1]#3

Beitrag von Romeo »

Hi!

Nach einer ganz schönen Fummelei funktioniert jetzt alles mehr oder weniger... am besten ich hätte auf den JColorChooser verzichtet...

Vielen, vielen Dank für die prompte Hilfe!

Grüße
Roland
markusj
Beiträge: 164
Registriert: Do 23. Okt 2008, 22:07

Re: SWT[1]#3

Beitrag von markusj »

@Roland:
Dann veränder mal die Größe von deinem Fenster oder lege vorübergehend ein anderes drüber, Mini- oder Maximiere es - all diese Aktionen haben zufolge, dass die Bildinformationen verloren gehen - wenn du nicht zwischenspeicherst, kannst du das also vergessen.

mfG
Markus
Romeo
Beiträge: 50
Registriert: Fr 19. Dez 2008, 20:24

Re: SWT[1]#3

Beitrag von Romeo »

Ja, das habe ich auch noch festgestellt.

Allerdings frage ich mich, wie ich es am besten bewerkstellige, auch mit einem Image den Inhalt beim Vergrößern / Verkleinern beizubehalten. Ich konnte bis jetzt noch nichts passendes finden, um das Image mizuvergrößern / -kleinern...

Aber jetzt läuft zumindest alles erstmal :-)

Schöne Grüße
Roland

EDIT: Ah, ich sehe, da gibt es doch noch was. GidF :-)
Tankwart
Beiträge: 133
Registriert: Do 20. Nov 2008, 13:56

Re: SWT[1]#3

Beitrag von Tankwart »

Hab Skalieren einfach ausgestellt, wurde ja nicht verlangt.
Habt ihr das Ding kommentiert? Dazu müsst ich das erstmal entziffern ^^
Christian S.
Beiträge: 225
Registriert: Sa 25. Okt 2008, 12:48

Re: SWT[1]#3

Beitrag von Christian S. »

Hallo,
Ich bin jetzt so weit den Tipps aus der Email von Andreas Höfer gefolgt, habe aber noch ein Problem: Meine Zeichenfläche (also das Bild) ist standarmäßig schwarz. Wie kann ich das ändern? Ich habe die Hintergrundfarbe des Panels passend gesetzt, jedoch scheint BufferedImage diese Hintergrundfarbe zu ignorieren.
Vielen Dank,
Christian
Edit: Lösung gefunden - manchmal sind die Dinge auch zu einfach :D. Ich habe jetzt im Konstruktor einfach auf das Image ein weißes Viereck gezeichnet ;).
FreaK
Beiträge: 10
Registriert: Sa 25. Apr 2009, 16:02

Re: SWT[1]#3

Beitrag von FreaK »

hi,
sag mal könnte mir einer in einfachen worten erklären was dieses "super();"
da eigentlich ist ? bzw. wie man es benutzt ? ich versuch jetzt schon die ganze zeit das raus zu kriegen werd aber aus den "erklärungen" von der sun seite nich schlau und werd auch das gefühl nicht los das das zwingend notwendig is das , dass überhaupt funktioniert. Die Aufgabe is schon ein bischen überzogen fürs erste übungsblatt ... :no:

gruss
Antworten

Zurück zu „Übung“