javanewbie: Zeichnen wenns kein Applet ist

Hallo zusammen,

ich zerbreche mir als Anfänger den Kopf über eine eigentlich doch ganz einfaches Problem:

Wie kann ich in Java etwas zeichnen, wenn ich kein Applet habe sondern eine normale Applikation?

Bei eine Applet geht es ja so:

public class PaintDemo extends Applet {
    // Angezeigter Text
    final String text = "a little graphic demo in Java";

public void init(){
     // Setzen des Fonts und der Hintergrundfarbe
     setFont(new Font("SansSerif", Font.PLAIN, 20));
     setBackground(Color.white);
    }

public void paint(Graphics g) {
      g.drawString(text, x, y);  // Anzeigen des Textes
    }
  }

Aber wie würde das ganze in einem normalen Programm gehen? Ich würde gerne so etwas wie ein eigenstädniges Malprogramm schreiben.

  1. moin javanewbie :)

    Aber wie würde das ganze in einem normalen Programm gehen? Ich würde gerne so etwas wie ein eigenstädniges Malprogramm schreiben.

    Bevor du damit anfängst solltest du dir mal Grundsätzliches über Grafikprogrammierung in Java und Komponenten und Ereignisse anlesen.

    Für das Gui müsstest du dich dann für AWT oder Swing oder etwas anderes entscheiden. Ich selbst hab ganz nette Erfahrungen mit SWT gemacht.

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
  2. Hi !

    Ein Frame hat auch eine paint()-Methode. Schau mal nach einem Beispiel im Internet nach. Am Besten, Du erzeugst ein Image, auf dem Du dann rummalst. Das hat den Vorteil, dass Du immer wieder eine Kopie vom Image machst, und somit dem User eine "Undo"-Funktion zur Verfügung stellst. Desweiteren kannst Du das Image bequem mit ImageIO.write(BufferedImage,"PNG",file) (genaue Syntax bitte nachlesen) speichern und so ähnlich wieder lesen. Der Methodenname soll jetzt erst mal als Aufpunkt dienen, von dem Du aus weiter suchen kannst.

    Bei meinem Malprogramm war es so: Als ich erst einmal die ersten Punkte setzen konnte, kamen mir zig Ideen, was ich noch machen könnte. Z.B. Über Image-Buffering kannst Du Objekte über das Bild bewegen, ohne daß das Bild übermalt wird
    1.) Image1 (Maloberfläche) kopieren -> Image2
    2.) auf Image1 das Objekt malen
    3.) Wenn Maus mit dem Objekt bewegt wird, Image2 auf Image1 kopieren
    4.) Objekt an aktueller Mausposition auf Image1 malen

    Das solange wiederholen, bis der User den Mausbutton drückt, dann Objekt endgültig auf Image1 schreiben. Bei Undo -> Image2 nach Image1 kopieren.

    Gruß

    Hans da Vinci ;-)