![]() |
|
|
|||||||
| Entwürfe Dieser Bereich dient zur Entwicklung von FAQ-Beiträgen, die nach Fertigstellung in die FAQ verschoben werden. Rechte zum Erstellen von FAQ-Entwürfen haben nur registrierte Stammbenutzer (>100 Beiträge) und Projektteilnehmer. Fertige Beitrage bitte bei einem Moderator oder Administrator zum Verschieben in den FAQ-Bereich per PN anmelden. |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Als kleinen Einstieg zum Punkt aus diesem Thread. Ich dachte da an einige einfache, compilierbare Schnipsel, jeweils jeweils auf minimale Weise (!) einige Funktionen anbieten, nach denen immer wieder mal gefragt wird.
GANZ grob: - Einfach etwas zeichnen (Frame mit von JPanel abgeleiteter Klasse mit überschriebener paintComponent) - Mehrere verschiedene Objekte zeichnen (Wie oben, aber mit einer List<Drawable> in der JPanel-Klasse) - Anklickbare Objekte zeichnen - Verschiebbare Objekte zeichnen - Animierte Objekte zeichnen ... Die Schwierigkeit bestünde da für mich weniger darin, das zu machen, sondern dem Abstraktionsdrang entgegenzuwirken und das ganze so rudimentär und minimalistisch wie möglich zu machen, damit jede einzelne "Stufe" noch nachvollziehbar bleibt, und man sich nicht mit den Dingen konfrontiert sieht, die eigentlich erst bei komplexeren Programmen relevant werden. Es ginge ja wirklich um Beispiele, wo man 100 Zeilen (notfalls auch unverstanden) rauskopiert und nur an so wenigen Stellen wie möglich solche Kommentare wie "// Hier dein Zeug zeichnen" mit eigenem Code ergänzt. |
|
|
|
| #2 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 09.04.2010
Fachbeiträge: 5.560
Blog-Einträge: 2
Abgegebene Danke: 3
Erhielt 842 Danke für 812 Beiträge
|
Ist der Thread als "Lieber Tagebuch, ich werde bald..." oder als "Schmeißt mal Vorschläge rein..." zu verstehen?
Man könnte ja ein Beispiel von "Systemauslastung-Graph-Zeichnen-Ding" brigen, wo man eben erkennen sollte, dass die pain-Methode nur dazu gedacht ist das was da ist zu zeichnen und die Berechnungen woanders erfolgen sollten. |
|
|
|
| #3 (permalink) | |
|
Java-Forum Team
Site Operator
Registriert seit: 24.04.2004
Fachbeiträge: 11.919
Abgegebene Danke: 47
Erhielt 565 Danke für 528 Beiträge
|
Eher als: "Ich möchte eine(n) [...] [anpassen/verschieben/anzeigen/öffnen/schließen etc.], habe aber keinen Ansatz dazu. Könnt ihr mir ein kurzes Codebeispiel dazu posten?"
__________________
Schöne Grüße, L-ectron-X Programmieren lernt man nur durch programmieren. www.java-forum.org - Java programmieren aus Leidenschaft www.byte-welt.de - Die Welt des Programmierens "Wenn man die Buchstaben von Bundeskanzlerin umstellt, kommt Bankzinsenluder raus..." |
|
|
|
| #4 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Hm ich habe den Thread mal hier im Entwurfsbereich aufgemacht, damit es einen Platz gibt, wo ich oder jemand anderes bei Gelegenheit solche Schnipsel posten kann, und sie dann von anderen zerrissen werden können (in noch kleinere Schnipsel
) bevor sie in die FAQ wandern.... Nicht OK? ![]() @XHelp: Das mit dem Graphen ist einerseits etwas spezifischer, als das, was ich meinte: Ich dachte wirklich an sowas wo z.B. einfach eine von JPanel abgeleitete Klasse in ein JFrame gelegt wird, und dort in der paintComponent eben steht // Hier kannst du das Graphics zum Malen verwenden (und NUR hier )und wo eben NICHT irgendwo getGraphics aufgerufen wird, dafür aber super.paintComponent, und wo das GUI mit den SwingUtilities im EDT erstellt wird... Dann darauf aufbauen eben Beispiele wie oben angedeutet, z.B. auch sowas wie "Mit einem Buttonklick etwas zeichnen lassen"... Und wenn dann mal wieder jemand in einem AWT-Frame paint überschreibt oder im der actionPerformed mit getGraphics rumpfuscht, kann man ihn darauf verweisen, und er hat ein template, wo schonmal viele Fehler vermieden sind. Andererseits ist eine Sache, die auch immer wieder angefragt wird: Ein Funktionsplotter ...
|
|
|
|
| #5 (permalink) | |
|
Java-Forum Team
Site Operator
Registriert seit: 24.04.2004
Fachbeiträge: 11.919
Abgegebene Danke: 47
Erhielt 565 Danke für 528 Beiträge
|
Doch doch... es gibt oftmals Fragen, die man immer mit dem gleichen Standard-Code beantworten könnte, in dem man auf den entsprechenden Code in den FAQs verweisen könnte.
__________________
Schöne Grüße, L-ectron-X Programmieren lernt man nur durch programmieren. www.java-forum.org - Java programmieren aus Leidenschaft www.byte-welt.de - Die Welt des Programmierens "Wenn man die Buchstaben von Bundeskanzlerin umstellt, kommt Bankzinsenluder raus..." |
|
|
|
| #6 (permalink) | |||||||||||||||||||
|
Stammbenutzer
Megabyte
Registriert seit: 28.04.2007
Fachbeiträge: 1.443
Abgegebene Danke: 48
Erhielt 95 Danke für 63 Beiträge
|
Ein gewisser Grad an Abstraktion sollte schon enthalten sein. Von daher finde ich den Ansatz gut, das hier gemeinschaftlich zu erstellen und zu diskuiteren.Das wären Beispiele, die sicherlich oft verlinkt würden.
|
||||||||||||||||||
|
|
|
||||||||||||||||||
| #8 (permalink) | |||||||
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Wenn man einfach nur etwas zeichnen will:
Wenn man durch einen Button-Klick etwas zeichnen will:
Wenn man verschiedene Objekte zeichnen will:
Schon bei diesen Beispielen stellen sich viele Fragen: Sollte man zwischen den letzten beiden einen Unterschied machen? Wenn nicht, sollte man dann immer gleich "Paintable" oder überall nur Shapes verwenden? Wie hält man es damit für die weiteren Funktionen (anklickbar, verschiebbar, animiert (ohne den EDT zu blockieren ) ... ?)Vielleicht hat ja jemand Ideen. |
||||||
|
|
|
| #9 (permalink) | |
|
Java-Forum Team
Site Operator
Registriert seit: 24.04.2004
Fachbeiträge: 11.919
Abgegebene Danke: 47
Erhielt 565 Danke für 528 Beiträge
|
Gibt es einen Grund, warum die paintComponent()-Methode bei deinen Beispielen nicht mehr protected ist?
__________________
Schöne Grüße, L-ectron-X Programmieren lernt man nur durch programmieren. www.java-forum.org - Java programmieren aus Leidenschaft www.byte-welt.de - Die Welt des Programmierens "Wenn man die Buchstaben von Bundeskanzlerin umstellt, kommt Bankzinsenluder raus..." |
|
|
|
| #10 (permalink) | |||||||||||||||||||||
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 09.04.2010
Fachbeiträge: 5.560
Blog-Einträge: 2
Abgegebene Danke: 3
Erhielt 842 Danke für 812 Beiträge
|
Habe zu dem anklickbarem Teil eine Idee, muss ich aber noch eine Nacht darüber schlafen. Vllt wird die aber schon aus dem Interface deutlich. Geändert von XHelp (09.02.2011 um 00:47 Uhr) |
||||||||||||||||||||
|
|
|
||||||||||||||||||||
| #11 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 28.04.2007
Fachbeiträge: 1.443
Abgegebene Danke: 48
Erhielt 95 Danke für 63 Beiträge
|
Schöne Beispiele.
2 Anmerkungen sind mir beim Überfliegen eingefallen.1. Mir ist nicht ganz klar, warum Du grundsätzlich das Graphics-Object in ein Graphics2D castest? Außer bei den RenderingHints im letzten Beispiel sehe ich da keinen Vorteil? (Lasse mich aber gern eines besseren belehren )2. Ich fände es gut, wenn die Beispiele aufeinander aufbauen. Für das GeneralPaintPanel im 3. Beispiel hast Du eine komplett neue Klasse. Evtl. wäre es lehrreicher für den Newbie, wenn man stattdessen das ShapePaintPanel erweitert/aufbohrt? |
|
|
|
| #12 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
@L-ectron-X: Eine (schlechte
) Angewohnheit (seltsamerweise NUR bei dieser Methode) - werde ich ändern. @XHelp: Viel "erklären" wollte ich eigentlich nicht ... nicht dass das doch noch ein Swing-Tutorial wird (BTW: Das anklicken wäre im einfachsten Fall ja ein shape.contains(...) ?!). Ein ein Punkt, der für das Interface sprechen würde, wäre natürlich der des "Stufenweisen Aufbauens", und...(auch....@Quaxli: ) ...dieser Gedanke der "Stufenweisen Erweiterung" steckte da schon ein bißchen drin. Ich aber bin nicht sicher, wie dafür de günstigste Strategie wäre. Eigentlich sollte es ja wirklich nur eine Art "Steinbruch" sein, wo man sich Copy&Paste-Vorlagen für eine spezifische(!) Zielsetzung rausholt - andererseits würde sich schon jetzt eine potentielle Kombinatorische Explosion andeuten: Zeichenbar, Zeichenbar+Klickbar, Zeichenbar+Animiert, Zeichenbar+Klickbar+Animiert... (Und DAS wäre ein Fall, wo man sowas nicht mit OSGi & Co lösen würde )... Aber vielleicht kann man diesen Gedanken noch ein bißchen besser ausnutzen... (Ich bin nicht sicher, wie man das formulieren soll, aber grob: ) ... ohne dass man bei der letzten "Stufe" sieht, dass es vorher schon andere Stufen gab...
|
|
|
|
| #13 (permalink) | |||
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 09.04.2010
Fachbeiträge: 5.560
Blog-Einträge: 2
Abgegebene Danke: 3
Erhielt 842 Danke für 812 Beiträge
|
So, nun habe ich die Nacht drüber geschlafen und es kommt mir mittlerweile gar nicht so richtig vor. Aber da der Thread in "Entwürfe" ist, packe ich das mal rein.
Habe einfach mal dein Smiley-Beispiel etwas umgebaut:
|
||
|
|
|
| #14 (permalink) | |||
|
Stammbenutzer
Megabyte
Registriert seit: 28.04.2007
Fachbeiträge: 1.443
Abgegebene Danke: 48
Erhielt 95 Danke für 63 Beiträge
|
@XHelp: So recht funktioniert Dein Beispiel aber nicht? Oder sagen wir so: Nicht bei mir.
Der MouseListener im GeneralPaintPanel schlägt bei mir nicht zu. Ich schau' da später nochmal genauer drauf.Nachdem die Idee von Marco ja war, daß man die Dinger einfach kopiert und ausführen kann, fehlt mir zusätzlich noch die main-Methode. Außerdem bin ich der Meinung, daß man Basis-Klassen verwenden sollte, wo es möglich ist, auch in einem NICHT-Tutorial ![]() Ich habe daher das Smiley mal von Rectangle erben lassen:
|
||
|
|
|
| #15 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Darüber könnte jetzt eine lange philosophische Diskussion ausbrechen. Als erstes "Gegenargument" würde ich stichwortartig "Composition over Inheritance" einwerfen. Rectangle macht wirklich nicht viel, deswegen könnte es fast noch vertretbar sein, aber ... solche Methoden wie "reshape", "addPoint" oder "union" will man eigentlich nicht in einem Ding, dessen einzige und alleinige Aufgabe es ist, etwas zu repräsentieren, was einen Smiley auf den Bildschirm malt. (Threads in denen irgendwelche Sprites von JComponent erben, weil "...das mit setLocation und addMouseListener so praktisch ist" gibt es schon einige, da ist verständlicher, warum ich mit sowas Bauchschmerzen habe...)
|
|
|
|
| #16 (permalink) | |
|
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator Registriert seit: 09.04.2010
Fachbeiträge: 5.560
Blog-Einträge: 2
Abgegebene Danke: 3
Erhielt 842 Danke für 812 Beiträge
|
Nein, die fehlt nicht. Für dieses Beispiel brauchst du noch Paintable und SwingGeneralPaint aus dem Beispiel von Marco. Die letzte Klasse enthält auch die main.
|
|
|
|
| #17 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Ja, wenn nur bestimmte Teile weiterdiskutiert werden, braucht man ja nicht alles zu posten, am Ende können die Beispiele ja als 1:1-Singe-C&P-Blöcke zusammengebastelt werden.
|
|
|
|
| #18 (permalink) | |
|
Java-Forum Team
Site Operator
Registriert seit: 24.04.2004
Fachbeiträge: 11.919
Abgegebene Danke: 47
Erhielt 565 Danke für 528 Beiträge
|
Marco13: Gibts hier noch Fortschritte?
__________________
Schöne Grüße, L-ectron-X Programmieren lernt man nur durch programmieren. www.java-forum.org - Java programmieren aus Leidenschaft www.byte-welt.de - Die Welt des Programmierens "Wenn man die Buchstaben von Bundeskanzlerin umstellt, kommt Bankzinsenluder raus..." |
|
|
|
| #19 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Die Frage wäre eher "Gibt es schon Fortschritte", aber in anbetracht des Datums, ja...
Aber das ist eine gute Idee, ich kann da heute mal ein bißchen weiterbasteln...
|
|
|
|
| #20 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.725
Abgegebene Danke: 0
Erhielt 1.635 Danke für 1.480 Beiträge
|
Soo... ich habe nochmal weitergebastelt. Aber irgendwie sind die Fragen, wie man das am günstigsten strukturiert, für mich immer noch nicht geklärt. Das "einfachste Zeichnen" geht ja noch. Aber schon bei Zeichnen+Klicken stellen sich Fragen, von denen ich nicht weiß, ob sie egal sind oder nicht.
Zum Beispiel: Sollte Clickable von Paintable erben? Eigentlich nicht. Die beiden Sachen haben nicht viel miteinander zu tun. Wenn man beides vermischt, wirkt es unstrukturiert, und wenn man es trennt, wird es so schnell so "aufwändig", dass es jemanden, der nur ein Snippet sucht, vielleicht schon erschlägt oder verwirrt. Das ist nur ein Beispiel. Darüber hinaus und allgemeiner wäre die Frage: Sollen die Snippets so sein, dass sie auch ohne Vorwissen leicht nachvollziehbar sind? Auch wenn das bedeutet, dass die Struktur, die durch sie vorgegeben wird, schlecht erweiterbar ist? Ich würde jetzt dazu tendieren, um der Einfachheit willen Dinge auch mal so zu machen, wie man sie eigentlich (in einem "echten Programm") nicht machen würde, und die vielleicht nicht von Eleganz, Allgemeingültigkeit und Erweiterbarkeit strotzen.... |
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Zeichnen in Swing Tutorial | Wildcard | Entwürfe | 53 | 31.01.2012 16:28 |
| Swing Tutorial | foxy | AWT, Swing, JavaFX & SWT | 4 | 18.04.2007 20:39 |
| Swing Tutorial gesucht ! | jagdfalke | Java Basics - Anfänger-Themen | 11 | 14.07.2005 15:05 |
| problem mit applet... | redman | Deployment | 0 | 27.01.2004 08:46 |
| Lesezeichen |
|
|