Startseite
Klassenlexikon

Klasse JComponent

Namensraum Vererbungshierarchie Schnittstellen
javax.swing
java.lang.Object
  java.awt.Component
    java.awt.Container
      JComponent
        javax.swing.JPanel
Accessible
ImageObserver
MenuContainer
Serializable
Kurzbeschreibung

JComponent ist eine abstrakte Klasse und Basisklasse fast aller visuellen Komponenten von Swing. JComponent ist eine geeignete Basisklasse für die Implementierung spezialisierter visueller Komponenten.


Beschreibung der Klasse in der offiziellen Java-Dokumentation

Java SE 6http://docs.oracle.com/javase/6/docs/api/javax/swing/JComponent.html
Java SE 7http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html

Hinweise

Die Unterscheidung zwischen Mausereignissen und Mausbewegungen mag als unnötige Komplizierung angesehen werden, sie hat aber einen guten Grund: Viele von JComponent abgeleitete Darstellungselemente (z.B. Taster und Schalter) benötigen lediglich die Mausereignisse. Mausbewegungen werden verhältnismäßig selten benötigt (z.B. in Malprogrammen); ihre Beobachtung verursacht außerdem eine hohe Belastung des Rechners. Es ist also sinnvoll, sich in Fällen, in denen die Mausbewegungen nicht benötigt werden, auf die Beobachtung der Mausereignisse zu beschränken.


Vorlage für paintComponent, falls das Panel keinen Rand verwendet.

    @Override
    public void paintComponent(java.awt.Graphics arg) {
        super.paintComponent(arg);
        java.awt.Dimension groesse = this.getSize();
        java.awt.Rectangle bereich = new java.awt.Rectangle(groesse);
        java.awt.Graphics2D g = (java.awt.Graphics2D) arg;
        
        this.InhaltZeichnen(g, bereich);
    }

Vorlage für paintComponent, falls das Panel einen Rand verwendet.

    @Override
    public void paintComponent(java.awt.Graphics arg) {
        super.paintComponent(arg);
        java.awt.Dimension groesse = this.getSize();
        java.awt.Insets insets = this.getInsets();

        java.awt.Rectangle bereich = 
           new java.awt.Rectangle(insets.left, insets.top,
                groesse.width - (insets.left + insets.right),
                groesse.height - (insets.top + insets.bottom));
        java.awt.Graphics2D g = (java.awt.Graphics2D) arg;
        
        this.InhaltZeichnen(g, bereich);
    }

Wenn das Panel mit einem Rand ausgestattet wurde, darf die Strichbreite des Zeicheninstruments in paintComponent nicht verändert werden. Die folgende Vorlage sollte in dieser Situation verwendet werden:

    @Override
    public void paintComponent(Graphics arg) {
        super.paintComponent(arg);
        java.awt.Dimension groesse = this.getSize();
        java.awt.Insets insets = this.getInsets();

        java.awt.Rectangle bereich =
           new java.awt.Rectangle(insets.left, insets.top,
                groesse.width - (insets.left + insets.right),
                groesse.height - (insets.top + insets.bottom));
        java.awt.Graphics2D g = (java.awt.Graphics2D) arg;
        
        java.awt.Stroke st = g.getStroke();   //  Strichbreite speichern
        this.InhaltZeichnen(g, bereich);
        g.setStroke(st);             //  frühere Strichbreite wiederherstellen
    }

Startseite
Klassenlexikon