Zeichnen in Applets

Er werden drei verschiende Methoden gezeigt, um in Applets zu zeichnen.

Um in Applets zu zeichnen, gibt kann man einfach das Grafikobjekt (Graphics g) in der paint
Methode verwenden.
Dies wird im folgenden Beispiel gezeigt.

 

Zeichnen in Applets - die Erste 

 
import java.awt.*;
public class GrafikBeispiel extends java.applet.Applet {
   public void paint(Graphics g){
       Font f = new Font("Serif",Font.ITALIC,20);
       g.setFont(f);
       g.drawString("Jupsi!",200,100);
       g.setColor(Color.blue);
       g.drawLine(0,0,300,300);
       g.drawOval(100,200,30,50);
       Color c = new Color(255,0,0);
       g.setColor(c);
       g.fillOval(100,200,30,50);
     }
}


// Kommentare zum Quellcode
// Schrift erzeugen:Zeichensatz, Schriftart und -grösse
// Schrift setzen
// Jupsi! schreiben beginnend bei (200,100)
// Linie zeichnen von P1(0,0) bis P2(300,300)
// Oval zeichen
// Zeichenfarbe auf rot ändern (R=255,G = 0,B= 0)
// Elipse füllen und zeichen



Zeichnen in Applets - die Zweite 


package applet;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.Rectangle;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;

public class GraphicsAppletSkeleton extends JApplet {
    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JButton buttonGO = null;
    private Canvas canvas = null;
    Graphics gr;

    public GraphicsAppletSkeleton() throws HeadlessException {
        super();
    }

    public void init() {
        this.setSize(200, 200);
        this.setContentPane(getJContentPane());
        gr = canvas.getGraphics();
    }

    public void onDraw() {
        int r = (int) (Math.random() * 254);
        int g = (int) (Math.random() * 254);
        int b = (int) (Math.random() * 254);
        Color color = new Color(r, g, b);
        gr.setColor(color);
        gr.fillRect(2, 2, 146, 146);
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getJButtonGo(), null);
            jContentPane.add(getCanvas(), null);
        }
        return jContentPane;
    }

    private JButton getJButtonGo() {
        if (buttonGO == null) {
            buttonGO = new JButton();
            buttonGO.setBounds(new Rectangle(5, 165, 80, 26));
            buttonGO.setText("GO");
            buttonGO.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    onDraw();
                }
            });
        }
        return buttonGO;
    }

    private Canvas getCanvas() {
        if (canvas == null) {
            canvas = new Canvas();
            canvas.setBounds(new Rectangle(5, 5, 150, 150));
            canvas.setBackground(Color.white);
        }
        return canvas;
    }
}
 

Zeichnen in Applets - die Dritte 




package applet;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;

public class GraphicsAppletSkeleton extends JApplet implements Runnable {
    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JButton buttonGO = null;
    private JButton buttonSTOP = null;
    private Canvas canvas = null;
    Graphics gr;
    Thread thread;
    boolean running = false;

    public GraphicsAppletSkeleton() throws HeadlessException {
        super();
    }

    public void init() {
        this.setSize(200, 200);
        this.setContentPane(getJContentPane());
        gr = canvas.getGraphics();
    }

    public void onStart() {
        if (thread == null) {
            thread = new Thread(this);
            running = true;
            thread.start();
        }
    }

    public void onStop() {
        running = false;
        thread = null;
    }

    public void onDraw() {
        int r = (int) (Math.random() * 254);
        int g = (int) (Math.random() * 254);
        int b = (int) (Math.random() * 254);
        Color color = new Color(r, g, b);
        gr.setColor(color);
        gr.fillRect(2, 2, 146, 146);
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getJButtonGo(), null);
            jContentPane.add(getJButtonStop(), null);
            jContentPane.add(getCanvas(), null);
        }
        return jContentPane;
    }

    private JButton getJButtonGo() {
        if (buttonGO == null) {
            buttonGO = new JButton();
            buttonGO.setBounds(new Rectangle(5, 165, 80, 26));
            buttonGO.setText("GO");
            buttonGO.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    onStart();
                }
            });
        }
        return buttonGO;
    }

    private JButton getJButtonStop() {
        if (buttonSTOP == null) {
            buttonSTOP = new JButton();
            buttonSTOP.setBounds(new Rectangle(90, 165, 80, 26));
            buttonSTOP.setText("STOP");
            buttonSTOP.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    onStop();
                }
            });
        }
        return buttonSTOP;
    }

    private Canvas getCanvas() {
        if (canvas == null) {
            canvas = new Canvas();
            canvas.setBounds(new Rectangle(5, 5, 150, 150));
            canvas.setBackground(Color.white);
        }
        return canvas;
    }

    public void run() {
        while (running) {
            onDraw();
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

 

 

Applet und Html



Um die jeweiligen Applets zum laufen zu bekommen muss der Quellcode (die Klasse) noch
kompiliert werden und die entstehende *.class Datei
in eine HTML-Seite eingebunden werden.
Dabei geben die beiden Parameter width und heigt die Größe des Applets an.
Dieses Applet kann jetzt mit einem Browser aufgerufen werden.