![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Kurze Frage .. und sorry im Voraus. Ich bin kurz vorm Einpennen, aber ich will schnell noch die Frage loswerden, damit ich das nicht vergesse *gg* Aaaaaalso. Ich habe ein Objekt vom Typ Line2D.Double, welches ich gerne auf ein Panel zeichnen möchte. Wie mach ich das denn am besten? Ich habe mir jetzt überlegt, dass ich mit der Methode drawLine(..) arbeite. Das Problem ist aber, dass ich in der Methode buildBorder() kein Graphics-Objekt zur Verfügung habe. Das hier .. PHP-Code: PHP-Code: Ich dachte mir .. okay, haste doch noch nicht verstanden, wie das mit getContentPane() läuft .. aber das ist dort auch gar nicht verfügbar, also wird es daran ja nicht wirklich liegen. Die Methode liegt in der Klasse FlipperPanel extends JPanel implements Runnable, in der es auch eine paintComponent()-Methode gibt. Diese zeichnet ein gepuffertes Bild, zur Reduktion des Bildschirmflackerns auf das Panel. (richtig ausgedrückt?) Meine Frage ist nun .. wie kann ich es am besten realisieren, dass diese verdammte Linie gezeichnet wird? Ich danke für Eure Antworten. Grüße Ben. |
| | |
| | Nach oben #3 |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 575
|
Also ich würde das nach dem Vorbild der GUI machen. Dort gibt es ja Container und Elemente die du darin addest. Auf mich scheint es so als wenn BorderBarricade ein Element ist das mehr als 1x auf dem FlipperPanel gezeichnet werden kann, oder? Ich würde das ganze also nach folgendem Model aufbauen: FlipperPanel ist ein Container BorderBarricade ist ein Element Damit das funktioniert muß BorderBarricade von einer Klasse abstammen von der auch alle anderen Klassen abstammen die gadded werden können. Zu diesem Zweck erstellen wir die Basis GraphicElement, diese sorgt dafür, dass alle von ihr abgeleiteten Klassen eine Methode paintElement(Graphics g) hat die du dann selbst bei einer Ableitung überschreiben mußt. So, von dieser Basis muß BorderBarricade also erben, und die die paintElement(Graphics g)-Methode von BorderBarricade schreibst du dann das zeichnen der Graphic indem du das Graphics-Element verwendest. Jetzt schnappst du dir FlipperPanel und schreibst dort einen Vector<GraphicElement> hinein den wir graphicElements nennen und legst eine Methode .addGraphicElement(GraphicElement graphicElement) an die dann dem Vector ein Element hinten dran hängt. Das "adden" besorgst du am besten im Konstructor, also während der initialisierung. Oder wann du möchtest. Jetzt kommt der Clou: Dort wo du in FlipperPanel das Bild zeichnest durchläufst du einfach den Vector und springst jeweils die paintElement Methode des GraphicElement an, und schon kannst du sicher sein, dass alles gezeichnet wird. OOP ist es auch noch. Code: // Ungetestet
public void beispielMalMethodeInFlipperPanel(Graphics g) {
for (int i=0; i < graphicElements.size(); i++) {
graphicElements.get(i).paintElement(g);
}
}
Ich hoffe das war verständlich Gruß Sparrow |
| | |
| | Nach oben #4 |
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 521
|
ich glaub bla will damit nur nen rahmen malen und der wird in swing nicht mit ner eigenen komponente realisiert. um den border zu ändern musst man die paintBorder(Graphics) methode überschreiben. und da steht dann auch ein graphics objekt zur verfügung. allerdings müssen dann auch die insets verändert werden.
__________________ Weißt Bescheid - Scheiß wie weit |
| | |
| | Nach oben #5 | |
| Sesselkleber Registriert seit: 17.01.2005
Beiträge: 575
| Zitat:
Er soll ja auch für das Zeichnen keine Swing-Komponente verwenden sondern sein Vorgehen zur realsierung des "addens" der Grafik-Elemente ensprechend an der GUI anlehnen. Das funktioniert recht gut. Grüße Sparrow | |
| | |
| | Nach oben #6 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Jo hi, also Deine Ausführungen sparrow sind mir gerade insoweit unklar, da ich nicht so ganz verstehe, welche Vorteile es mir bringt. Vielleicht hab ichs auch einfach nicht verstanden *gg* Ich habe das jetzt mal behelfsmäßig so gemacht, wie pago es vorgeschlagen hat. Ich habe jetzt aber irgendwie ein Problemchen. Ich erstelle also einige "borders" und will diese nun mit Hilfe von g.drawLine(...) zeichnen. Das Zeichnen klappt auch .. hm .. aber irgendwie .. äh ... nicht so, wie ich mir das vorstelle. PHP-Code: EDIT: Ähm .. es werden nur die horizontalen Rahmen gezeichnet. Ich habe nun mal vier Rahmen erstellt .. mit Koordinaten, dass sie zusammen ein Quadrat ergeben. Geändert von Ben (16.02.2006 um 12:22 Uhr). |
| | |
| | Nach oben #7 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
*schubs* Kann mir eventuell jemand dabei weiterhelfen? Zitat:
Wieso das denn? Ist für mich vollkommen unlogisch. Der Quelltext der Methode sieht derzeit so aus ... PHP-Code: Danke, Grüße Ben. | |
| | |
| | Nach oben #8 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Magst vielleicht mal nen Screenshot davon posten, wie es aussieht, und wie es aussehen soll? Weil was ich da an deinen Koordinaten sehe, sieht nicht nach nem Rechteck aus... (die zweite X-Koordinate ist immer 400) |
| | |
| | Nach oben #9 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
| Zitat:
Jou. Ich hatte da auch einen kleinen Dreher drin. Na, wie soll das aussehen .. (sorry das Programm liegt auf dem Notebook und ich habe gerade keinen USB-Stick parat!) .. oben eine Linie, unten eine Linie (30,30) -> (400, 30) und (30,400) -> (400,400). Der Code sieht nun mal so aus. PHP-Code: | |
| | |
| | Nach oben #10 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Manche Menschen behaupten, Windows käme mit einem Grafikprogramm namens "Paint". Aber gut, das ist ja nu klar. Verschwindet der Fehler, nachdem du die Koordinaten ersetzt hast? Ah! Sieh mal: java Code:
|
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Vokabeltrainer | asenodin | Allgemeine Java-Programmierung | 9 | 28.05.2006 21:04 |
| Problem mit Zugriff von externer class auf Panel | Treter_Peter | Desktop-Applikationen und Grafik | 2 | 24.12.2004 13:22 |
| mit Graphics Zeichnen in einer untergeordneten Klasse | bluelight | Desktop-Applikationen und Grafik | 2 | 08.12.2004 22:23 |
| Auf ein Canvas Objekt per Mouseevents Linien Zeichnen | schärple | Desktop-Applikationen und Grafik | 6 | 12.06.2004 17:42 |