A
Anton2k
Gast
Hallo,
Ein Testprogramm für ein größeres was ich Plane lässt mich bereits verzweifeln. Ziel meines Programmes soll es sein das ich mich mit den Grafikfunktionen vertraut mache die ich dann wenn ich das eigentliche Programm schreibe verwenden möchte. Und einfach testen kann was am meisten sinn macht.
Aktuell soll es ein einfach Objekt basiertes Zeichenprogramm sein.
1. Ich hab mein Fenster, mit den Randelementen (NORTH,EAST,..) Im Center bereich möchte ich die Zeichenfläche haben. Diese soll 2000*2000 Pixel groß sein. Aus logischen Platzgründen sollte diese in einem JScrollPane untergebracht werden sodas man den sichtbaren ausschnitt der Zeichenfläche verschieben kann. Klappt nur leider nicht wirklich. Hatte als Zeichenfläche ein Canvas gedacht (vieleicht ist ein anderes Objekt sinnvoller?). Ordne ich dieses Canvas (hab die Farbe auf Blau gesetzt) der ScrollPanel zu sehe ich nur am Rand des Scrollpanels etwas Blau...wie ein Rahmen. Waran liegt das und wie kann man es so drehen das es im vordergrund ist?
2. Hab natürlich gesucht und Beispiel programm dazu gefunden. Welches ein Eigenes Canvas erstellt hat was von JPanel abgeleitet wurde. Dort hat es Funktioniert im Beispiel programm. Hab ich diese neue Canvas Componente meinem Center bereich zugeordnet wollte es wieder nicht. Was mich zu dem Schluss bring das es an irgend etwas anderem liegt was ich gerade noch nicht kapiere.
3. Das Programm wird erst einmal Simple Grafikobjekte Platzieren. Kreise, Vierecke, Striche. Für jedes gibt es je ein Eigenes Objekt in welchen es diese Methode gibt:
public void draw(Graphics g) {
g.setColor(GetFarbe());
g.drawLine(GetX1(),GetY1(),GetX2(),GetY2());
}
rufe ich sie Entsprechend auf wird es auch gezeichnet. Dann wurde aber irgendwo erwähnt man sollte lieber PaintComponent überschreiben anstelle von draw. Was ist sinnvoller?
4. Das ganze soll möglichst schnell neu gezeichnet werden können (wird erst im finalen Programm wichtig). Ist das vorgehen denn generell richtig diese Objekte in einem Array anzuordnen dieses dann zu durchlaufen und jeweils draw() für jedes Objekt aufzurufen? Oder gibt es eine sinnvollere möglichkeit?
Viele fragen aber ich hoffe man kann mir ein paar Tipps geben die mir weiter helfen.
Ein Testprogramm für ein größeres was ich Plane lässt mich bereits verzweifeln. Ziel meines Programmes soll es sein das ich mich mit den Grafikfunktionen vertraut mache die ich dann wenn ich das eigentliche Programm schreibe verwenden möchte. Und einfach testen kann was am meisten sinn macht.
Aktuell soll es ein einfach Objekt basiertes Zeichenprogramm sein.
1. Ich hab mein Fenster, mit den Randelementen (NORTH,EAST,..) Im Center bereich möchte ich die Zeichenfläche haben. Diese soll 2000*2000 Pixel groß sein. Aus logischen Platzgründen sollte diese in einem JScrollPane untergebracht werden sodas man den sichtbaren ausschnitt der Zeichenfläche verschieben kann. Klappt nur leider nicht wirklich. Hatte als Zeichenfläche ein Canvas gedacht (vieleicht ist ein anderes Objekt sinnvoller?). Ordne ich dieses Canvas (hab die Farbe auf Blau gesetzt) der ScrollPanel zu sehe ich nur am Rand des Scrollpanels etwas Blau...wie ein Rahmen. Waran liegt das und wie kann man es so drehen das es im vordergrund ist?
2. Hab natürlich gesucht und Beispiel programm dazu gefunden. Welches ein Eigenes Canvas erstellt hat was von JPanel abgeleitet wurde. Dort hat es Funktioniert im Beispiel programm. Hab ich diese neue Canvas Componente meinem Center bereich zugeordnet wollte es wieder nicht. Was mich zu dem Schluss bring das es an irgend etwas anderem liegt was ich gerade noch nicht kapiere.
3. Das Programm wird erst einmal Simple Grafikobjekte Platzieren. Kreise, Vierecke, Striche. Für jedes gibt es je ein Eigenes Objekt in welchen es diese Methode gibt:
public void draw(Graphics g) {
g.setColor(GetFarbe());
g.drawLine(GetX1(),GetY1(),GetX2(),GetY2());
}
rufe ich sie Entsprechend auf wird es auch gezeichnet. Dann wurde aber irgendwo erwähnt man sollte lieber PaintComponent überschreiben anstelle von draw. Was ist sinnvoller?
4. Das ganze soll möglichst schnell neu gezeichnet werden können (wird erst im finalen Programm wichtig). Ist das vorgehen denn generell richtig diese Objekte in einem Array anzuordnen dieses dann zu durchlaufen und jeweils draw() für jedes Objekt aufzurufen? Oder gibt es eine sinnvollere möglichkeit?
Viele fragen aber ich hoffe man kann mir ein paar Tipps geben die mir weiter helfen.