dh-Materialien
Java Projekte
// JavaProject FilledRectangle


Ein farbiges Rechteck wird auf einer farbigen Zeichenfläche ausgegeben. Die hierfür notwendigen Grafik-Methoden sind in der Klasse Graphics2D implementiert. paintComponent, eine von JPanel geerbte Methode der Klasse Canvas wird mittels dieser Grafik-Methoden überschrieben. Die Programmierzeile super.paintComponent(g); — in der Regel immer an erster Stelle hingeschrieben — bewirkt den Aufruf der ursprünglich in der Superklasse von Canvas (also in JPanel) implementierten Methode und hat insbesondere die Löschung gegebenenfalls bereits vorhandener Inhalte der Zeichenfläche zur Folge.

Die als Parameter der Methode getBackground übergebene Farbe ist nicht die Hintergrundfarbe der Zeichenfläche, sondern es ist diejenige Farbe, welche von der Methode clearRect verwendet wird.

FilledRectangle
// FilledRectangle.java

import java.awt.*;
import java.awt.geom.Rectangle2D;
import javax.swing.*;

class Canvas extends JPanel {
    private static final long serialVersionUID = 0L;

    Shape rectangle;
    BasicStroke stroke;
    Graphics2D g2d;

    public Canvas() {
        rectangle = new Rectangle2D.Float(88, 86, 90, 56);
        stroke = new BasicStroke(1.5f);
    }

    @Override
    public void
paintComponent(Graphics g) { // 2D-Grafik
        super.paintComponent(g);
        g2d = (Graphics2D) g;

        g2d.setBackground(new Color(0.2f, 0.5f, 0.8f));
        g2d.clearRect(10, 10, getWidth()-20, getHeight()-20);

        g2d.setPaint(Color.BLACK);
        g2d.setStroke(stroke);
        g2d.draw(rectangle);

        g2d.setPaint(Color.ORANGE);
        g2d.fill(rectangle);
    }
}


class CFrame extends JFrame {
    private static final long serialVersionUID = 0L;

    Image icon;
    Canvas canvas;
    Color bgcol;

    public CFrame() {
        setTitle("Farbiges Rechteck");
        icon = Toolkit.getDefaultToolkit().getImage("dh.png");
        setIconImage(icon);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 349, 301);

        canvas = new Canvas();
        add(canvas);
        setVisible(true);
    }
}


public class FilledRectangle {

    public static void main(String[] args) {
        new CFrame();
    }
}

Download FilledRectangle