[SOLVED]Automatischer Methodenaufruf?

Status
Nicht offen für weitere Antworten.

metalfan

Aktives Mitglied
Hi,

der unten stehende Code erzeugt ein Fenster, mit dem Inhalt: Zum Beenden bitte ESC drücken...
In der Klasse Listing2805 werden Instanzen der Klassen MainFrameCommand(Event Handling) und MainFrameGUI(Grafische Ausgabe) erzeugt. Aber wo wird dem Programm gesagt das es die Methode paint der Klasse MainFrameGUI aufrufen soll?



Code:
import java.awt.*;
import java.awt.event.*;

class MainFrameGUI extends Frame
{
    //public MainFrameGUI(KeyListener cmd)
    public MainFrameGUI(KeyAdapter cmd)
    {
        super("Nachrichtentransfer");

        //Instanz der Klasse WindowClosingAdapter erzeugen um den X Button zu belegen
        addWindowListener(new WindowClosingAdapter(true));

        //setBackground(Color.lightGray);
        setSize(300,200);
        setLocation(200,100);
        setVisible(true);
        addKeyListener(cmd);
    }


    public void paint(Graphics g)
    {
        g.setFont(new Font("Serif",Font.PLAIN,18));
        g.drawString("Zum Beenden bitte ESC drücken...",10,50);
    }

}

import java.awt.*;
import java.awt.event.*;

//class MainFrameCommand implements KeyListener
class MainFrameCommand extends KeyAdapter
{
    public void keyPressed(KeyEvent event)
    {
        Frame source = (Frame)event.getSource();
        if (event.getKeyCode() == KeyEvent.VK_ESCAPE)
        {
            source.setVisible(false);
            source.dispose();
            System.exit(0);
        }
    }
}

import java.awt.*;
import java.awt.event.*;

public class Listing2805
{
    public static void main(String[] args)
    {
        MainFrameCommand cmd = new MainFrameCommand();
        MainFrameGUI     gui = new MainFrameGUI(cmd);
    }
}
 
Das passiert automatisch, wenn Windows (bzw. das OS eben) dem Fenster sagt, adss es sich zeichnen soll.

( -> beim ersten Öffnen, beim Verschieben, nach dem Wiederherstellen etc.)
 
Hm, also java findet die Methode public void paint(Graphics g) und führt die einfach so aus? was passiert wenn in der Klasse mehrere Methoden definiert sind?
 
Die Methode ist in der Oberklasse Component definiert, diese wird ausgeführt. Wenn du die überschreibst wird dank late-binding (das is doch das, oder? 😉 ) deine paint-Methode ausgeführt (virtual/override in C#).
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben