![]() |
|
|
|||||||
| AWT, Swing & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI) sowie zur Grafikprogrammierung (2D / 3D) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #21 (permalink) | ||||||||||||||||
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.02.2006
Beiträge: 6.269
Abgegebene Danke: 0
Erhielt 2 Danke für 2 Beiträge
|
Hab mir diesen Thread erst heute durchgelesen, deshalb erst jetzt mein Kommentar dazu:
Kompliment@Wildcard: Seine (ihre ) Vorgehensweise, dieses Thema aufzudröseln ist zwarnichts für Eilige, aber er beschreibt dieses Thema anhand eines Laien, der sich in einen Anfänger versetzen kann, und ihn erstmal auf falsche Fährten lenkt. Diesen wohligmachenden Stil kenne ich noch von dem Verfasser unserer damaligen Informatik-Bibel: "Algorithmen und Datenstrukturen" (Verfasser: Niklaus Wirth(*)) Auch er verstand es sehr gut, in seinem Buch, jemanden zuerst auf einmal auf die falsche Fährte zu führen und dann, Schritt für Schritt, die Mysterica bei der Programmierung zu entschleiern. Dieses Buch hat meine Vorgehensweise beim Programmieren nachhaltig geprägt. Wildcard? Wie alt bist du eigentlich? (bitte, wenn überhaupt, via PN antworten )PS: Ich hoffe mal, daß dieser Post, trotz meiner offensichtlich erkennbaren Verfassung ( ), erhalten bleiben wird. Ich verabschiede mich, dann vorerst mal... P.S. Musste mal raus P.P.S.: auch wenn mich AlArsenal jetztele Verdammich machten tutet. P.P.S: Schönen Abend noch.... (*) a) Professor an der ETH Zürich b) Mit-Designer von Algol68 c) Erfinder von Pascal und Modula-II d) ich meine dem hier e) Zitat aus dem vorherigen Link:
__________________
|
|||||||||||||||
|
|
|
|||||||||||||||
| #24 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 19.02.2007
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo!
Kennt ihr das "Problem", dass man, wenn man etwas gezeichnet hat und ein anderes Fenster das ganze überlagert oder man es rüber zieht, das Gezeichnete gelöscht, bzw wie weg radiert wird? Ich habe hier diesen Thread überflogen und nichts dazu gefunden und für eine Google Recherche stell' ich mich nicht klug genug an. Wenn jemand das schon mal hatte, würde ich mich freuen, wenn ihr mir helfen könntet ![]() Danke!
__________________
Ich bin hilflos und Java-nicht-verstehend
|
|
|
|
| #25 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Wenn du in der paintComponent-Methode zeichnest (und NUR da!) und der Event-Dispatch-Thread nicht blockiert ist, sollte das nicht passieren. Wenn BEIDE Bedingungen nicht erfüllt sind, poste ein compilierbares Programm, wo das Problem auftritt. Wenn du nicht weißt, ob sie erfüllt sind, sag bescheid.
|
|
|
|
| #26 (permalink) | ||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.393
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 82 Danke für 79 Beiträge
|
muss der Malcode unbedingt in der callback Methode "paintComponent(..)" stehen. Diese wird vom System aufgerufen, wenn die Komponente beschädigt wurde. Wenn du den Malcode auslagern willst, dann besteht die Möglichkeit, auf ein Image zu malen, und in "paintComponent(..)" einfach nur dieses Image zu zeichnen (drawImage). Hier ist ein Beispiel: DrawOnImage.java
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. |
|||||||||||||||
|
|
|
|||||||||||||||
| #27 (permalink) | |
|
Benutzer
Byte
Registriert seit: 10.04.2008
Beiträge: 57
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Find das Tutorial super,vor allem da ich meistens mit älteren Tutorials zu tun hab da ich kein gutes finde ausser welchen die noch von 2003 oder sowas sind. Zum Thema dass man überall "benutze NICHT!!! getGraphics() " einsetzen soll,ich glaube das würd die leser mehr nerven als von getGraphics() abzubringen.Ich würd jedenfalls eher mit demLesen aufhören wenn ständig kommt NICHT GetGraphics() BENUTZEN.
__________________
Heute code ich,morgen debug ich, übermorgen caste ich die Königin auf int (aus dem bekannten Märchen Rumpelnerd) ShadowSpace-Der Tod wartet nicht |
|
|
|
| #28 (permalink) | ||||||||||||||||
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.393
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 82 Danke für 79 Beiträge
|
Für sich allein betrachtet, ist die Aussage nämlich falsch, wie dieses Beispiel zeigt: DrawOnImage.java
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. |
|||||||||||||||
|
|
|
|||||||||||||||
| #29 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Das mit dem "nicht getGraphics benutzen" war ja nur als Hinweis darauf, dass das (nicht wirklich ernsthaft "überall eingestreut"
, sondern an den entsprechenden Stellen oder einmal) an "prominanter Stelle" stehen sollte, weil es ja ein SEHR häufiger Fehler ist. Und wenn, dann auch richtig - also nicht nur das als kurzes, knackiges Bibel-ähnliches Gebot formulierte "Thous halt not call getGraphics", sondern sowas wie "getGraphics auf Components aufzurufen ist fast immer falsch" .... Nicht so drauf rumhacken
|
|
|
|
| #30 (permalink) | |||
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.393
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 82 Danke für 79 Beiträge
|
Auch eine ungünstige Formulierung (man fragt sich dann, wann es richtig ist, und die Antwort würde für Anfänger wohl wieder zu weit führen).
Hier ist eine mögliche positive Formulierung: Swing benutzt einen "callback" ("Wiederholungsbesuch") Mechanismus zum Zeichnen. Das heißt, daß ein Programm den Darstellungscode der Komponente innerhalb einer bestimmten überschriebenen Methode setzen sollte, und das Toolkit ruft diese Methode auf, wenn es Zeit ist zu malen. Die zu überschreibende Methode ist in javax.swing.JComponent:
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. Geändert von Ebenius (02.07.2009 um 17:04 Uhr) Grund: [code] => [java] |
||
|
|
|
| #31 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Das würde aber niemanden davon abhalten, "mal kurz" in irgendeinem "game loop" getGraphics().drawSomeWeirdStuff() aufzurufen. Aber vermutlich wird selbst das beste Tutorial der Welt uns nicht vor Theads bewahren, in denen das gemacht wird. Diejenigen, die diese Threads starten, haben im Zweifelsfall einfach noch kein entsprechendes Tutorial gelesen
|
|
|
|
| #32 (permalink) | |
|
Stammbenutzer
CD-R 80
Registriert seit: 10.05.2005
Beiträge: 7.393
Blog-Einträge: 9
Abgegebene Danke: 6
Erhielt 82 Danke für 79 Beiträge
|
Es gibt 1000 Möglichkeiten, Code zu schreiben, der nicht funktioniert.
Aber wenn wir ein einfaches Tutorial haben, das beschreibt, wie das Zeichnen in Swing funktioniert und wie man korrekten und leistungsfähigen GUI Malcode schreibt, dann ist das sicherlich von Vorteil. Zumindest können wir dann die Anfänger erstmal darauf verweisen. Siehe auch: Malen in AWT und Swing und Lesson: Performing Custom Painting
__________________
Lerne anzuhalten -- oder nichts lohnendes kann dich erreichen. |
|
|
|
| #33 (permalink) | |
|
Neuer Benutzer
Byte
Registriert seit: 08.01.2009
Beiträge: 17
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Gut gemacht.
Ich beschäftige mich erst seit kurzen mit der grafischen Programmierung, und konnte es gut verstehen. Ich finde auch den Weg nicht schlecht. Würde aber im "faschen Code" Kommentare setzen. Wenn man dann Copy& Past beim falshen Teil macht, wird man dann bei der Fehler Suche vielleicht den Fehler besser erkennen. Außerdem wenn ich es eillig habe und nur schnell Code suche, lese ich aber zumindestens die ersten Zeilen in einem HowTo um zu sehen was drin steht und ob sich die Suche im Howto lohnt. Und wenn das Vorgehen mit dem flaschen dem richtige Ansatz am Anfang erwähnt wird, ist das ausreichend. Ich würde es an deinen Stelle nicht ändern. |
|
|
|
| #36 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 18.11.2003
Beiträge: 4.646
Abgegebene Danke: 8
Erhielt 131 Danke für 127 Beiträge
|
Ich glaube, Wildcard wollte hier noch einige Änderungen machen. Die FAQ sollten, soweit ich weiß, keine Diskussionen beinhalten sondern in sich geschlossene Erklärungen. Dieses Thema ist für einen FAQ-Eintrag meiner Meinung nach zu durcheinander.
Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson] |
|
|
|
| #37 (permalink) | |
|
Neuer Benutzer
Bit
Registriert seit: 06.09.2009
Beiträge: 7
Blog-Einträge: 1
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo Wildcard,
ich finde das Tutorial auch gut, allerdings sollte nicht so rigoros auf den falschen Ansatz eingegangen werden. Für die Zukunft würde ich mir wünschen - Unterschied zwischen AWT und Swing, - warum paintComponent anstatt paint, - was hat es mit repaint auf sich, - wo soll setPreferredSize aufgerufen werden viele grüße |
|
|
|
| #39 (permalink) | |||
|
Neuer Benutzer
Bit
Registriert seit: 07.06.2010
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Jo die paint Methoden von JComponent zu überschreiben ist eine verkorkste Angelegenheit, da sich alles ineinander verschachtelt. Viel einfacher ist es sich das Graphics Objekt des Frame zu angeln und sich eigene Klassen(z.B.Kreis) schreiben welche das Graphics Object zum zeichnen nutzen.
Frame.getContentPane().getGraphics() Graphics2D g= (Graphics2d) Frame.getContentPane().getGraphics();
|
||
|
|
|
| #40 (permalink) | ||||||||||||||||
|
Java-Forum Team
IRC-Operator (Java-Chat)
Registriert seit: 02.07.2009
Beiträge: 2.924
Blog-Einträge: 1
Abgegebene Danke: 7
Erhielt 480 Danke für 477 Beiträge
|
Du hast die erste Seite nicht gelesen oder?
__________________
Gruß Basti |
|||||||||||||||
|
|
|
|||||||||||||||
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Frage zu Zeichnen in Swing Tutorial | AWT, Swing & SWT | 4 | 17.05.2008 00:06 | |
| Swing Tutorial | foxy | AWT, Swing & SWT | 4 | 18.04.2007 21:39 |
| Zeichnen in Swing | biker126 | AWT, Swing & SWT | 17 | 05.06.2006 23:35 |
| Swing Tutorial gesucht ! | jagdfalke | Java Basics - Anfänger-Themen | 11 | 14.07.2005 16:05 |
| SWING TUTORIAL | skYCop | AWT, Swing & SWT | 2 | 24.11.2003 19:31 |