Schaich: paint nach knopfdruck

Hey

kann mir einer sagen wie ich die paint()-Mathode erst nach einem knopfdruck ausführen kann??

MfG Schaich

  1. Hello,

    kann mir einer sagen wie ich die paint()-Mathode erst nach einem knopfdruck ausführen kann??

    vielleicht - auf wem und in was für einem Umfeld?

    MfG
    Rouven

    --
    -------------------
    When the only tool you've got is a hammer, all problems start to look like nails.
    1. vielleicht - auf wem und in was für einem Umfeld?

      Eigentlich ist mir das so ziemlich egal.
      Ich will nur dass ich z.b. was in die paint() methode schreibe was auf einen buttonklick ausgeführt wird, egal wie

      MfG Schaich

      1. Hello,

        Ich will nur dass ich z.b. was in die paint() methode schreibe was auf einen buttonklick ausgeführt wird, egal wie

        die Paint Methode von wem? Applet, Panel, JFrame, was denn? Und wo kommt der Button her?

        MfG
        Rouven

        --
        -------------------
        Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
        1. die Paint Methode von wem? Applet, Panel, JFrame, was denn? Und wo kommt der Button her?

          ein ganz normales Frame.
          der Button kann ist im konstruktor.

          1. Hello,

            deine Informationspolitik ist nicht wirklich hilfreich!

            1. Baue dem Button einen entsprechenden Listener, rufe im Listener die paint-Methode auf
            2. sollte die paint-Methode automatisch beim Erstellen des Objekts aufgerufen werden, dann versuche die Methode zu überschreiben und über ein boolean-Flag in der Klasse zu steuern, ob die Methode der Superklasse aufgerufen wird, was du erst zulässt, wenn vorher auf den Button geklickt wurde.

            MfG
            Rouven

            --
            -------------------
            Inter Arma Enim Silent Leges  --  Cicero
              1. Baue dem Button einen entsprechenden Listener, rufe im Listener die paint-Methode auf
              2. sollte die paint-Methode automatisch beim Erstellen des Objekts aufgerufen werden, dann versuche die Methode zu überschreiben und über ein boolean-Flag in der Klasse zu steuern, ob die Methode der Superklasse aufgerufen wird, was du erst zulässt, wenn vorher auf den Button geklickt wurde.

              Danke

  2. Hallo Schaich,

    kann mir einer sagen wie ich die paint()-Mathode erst nach einem knopfdruck ausführen kann??

    Wenn Du sowas machen willst, hast Du das Konzept von Swing (bzw. sehr vielen GUI-Toolkits) nicht verstanden.

    paint() ist dazu da, eine Komponente (oder Teile davon) entsprechend des aktuellen Zustands neu zu zeichnen. Wann das erforderlich ist, kannst Du gar nicht so direkt wissen. Es hängt davon ab, ob die Komponente überhaupt zu sehen ist. Du kannst lediglich mit "repaint()" das Zeichnen neu anstoßen, wenn Du z.B. etwas am Zustand der Komponente geändert hast.

    Die Lösung ist also so etwas:
    Du versiehst Deine Komponente mit einem Feld (private boolean buttonClicked = false) und einer Methode, das zu ändern:
    public void wasClicked() {
      buttonClicked = true;
      repaint();
    }
    Dann kannst Du paint() so implementieren:
    public void paint(...) {
      if (buttonClicked) {
        // irgendwas zeichnen.
      }
    }

    Natürlich ist es normalerweise nicht sinnvoll, als Zustand einer Komponente abzuspeichern, dass irgend welche Buttons angeclickt wurden.
    Da sollte man irgend etwas verwenden, was der Bedeutung der Komponente entspricht und diesen Zustand dann beim Click auf den Button entsprechend ändern.

    Grüße

    Daniel