Methode wird einfach aufgerufen

  • HI goldeneye,
    es gibt bestimmte Java-Methoden, die werden standardmäßig aufgerufen, ohne dass sich der Benutzer darum kümmern muss, hierzu gehört z.B. auch System.out.print(variabel); , die Methode toString() wird automatisch aufgerufen.
    Auf deinen Fall gilt dies ebenfalls, denn bei einem neuen Aufruf eines JFrames wird dies automatisch gezeichnet ( nur die Sichtbarkeit kannst du mit der Visible-Methode einstellen).
    Siehe auch hier: http://openbook.galileodesign.de/javainsel7/jav…1910d3e15169b91


    Wenn du das Fenster neu Zeichnen willst ,rufst du wie auf der Seite beschrieben dann auch nicht einfach paint() sondern repaint() auf.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

    Einmal editiert, zuletzt von K.Y.L.T. (19. Dezember 2008 um 09:17)

  • wieso schreibst du den string überhaupt mit paint??
    mach nen JLabel und gib dem ding nen text, das kannste dann nach belieben visible oder invisible setzen und den text kannst da auch beliebig ändern ;)

  • Zitat


    und was kann ich tun, damit das noch nicht gezeichnet wird?^^

    Was willst du denn damit erreichen, wenn du einen Fenster erstellst, es aber nicht anzeigen willst ?:confused:

    Zitat

    wieso schreibst du den string überhaupt mit paint??

    Die Frage ist nicht, warum man paint benutzt, sondern wofür man es braucht. Es kann durchaus sinn machen , sich selber die Paintmethode zu überschreiben, wenn man z.B. unterschiedliche Applikationen hat und Komponenten unterschiedlich auszusehen haben. - Ich stimme dir aber zu, dass die Variante hier eigentlich so nicht programmiert wird.

    Lösung -die nicht zu empfehlen ist- Quick and Dirty:
    Definiere dier eine Klassenvarabel text, schreib da am Anfang text= "" rein und setze sie vor dem nächsten Repaint.

    Lösung sauber:
    Füge wärend der Laufzeit ein neues Objekt, z.B. einen Label deinem JFrame hinzu und setze darauf den Text, sobald du nun repaint auf dem JFrame aufrufst müsste dein Text erscheinen.

    Zitat


    und was kann ich tun, damit das noch nicht gezeichnet wird?^^

    Was willst du denn damit erreichen, wenn du einen Fenster erstellst, es aber nicht anzeigen willst ?:confused:

    Zitat

    wieso schreibst du den string überhaupt mit paint??

    Die Frage ist nicht, warum man paint benutzt, sondern wofür man es braucht. Es kann durchaus sinn machen , sich selber die Paintmethode zu überschreiben, wenn man z.B. unterschiedliche Applikationen hat und Komponenten unterschiedlich auszusehen haben. - Ich stimme dir aber zu, dass die Variante hier eigentlich so nicht programmiert wird.

    Lösung -die nicht zu empfehlen ist- Quick and Dirty:
    Definiere dier eine Klassenvarabel text, schreib da am Anfang text= "" rein und setze sie vor dem nächsten Repaint.

    Lösung sauber:
    Füge wärend der Laufzeit ein neues Objekt, z.B. einen Label deinem JFrame hinzu und setze darauf den Text, sobald du nun repaint auf dem JFrame aufrufst müsste dein Text erscheinen.

    Beispiel:

    Code
    public staitc void main(String[] args){
        Fenster f = new Fenster();   // Hier wäre noch nichts dabei , wenn du nun anhalten würdest, wäre das Fenster leer
      JLabel label = new JLabel("Mein text"); // Erzeuge Label
     f.add(label); // füge das label auf dem fenster hinzu
    f.repaint(); // zeichne das Fenster neu
      }

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

    Einmal editiert, zuletzt von K.Y.L.T. (19. Dezember 2008 um 14:18)

  • Ich empfehle dir über Google, dass Thema Vererbung , objektorientierte Programmierung und Seiten wie galieo anzuschauen.


    Du hast eine einfache Klasse erzeugt, der du zwar die nötigen importe mitgegeben hast, allerdings vergisst du sie von JFrame erben zu lassen.

    extends JFrame

    wie du es oben geschrieben hast fehlt.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ