ActionListener - Aktionen vor/beim Schließen?

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
hallo forum,

Mein Programmchen soll diese beiden Print-Ausgaben durchlaufen.
wie bekomme ich es hin?Was mache ich falsch?

Code:
public class Main implements ActionListener {       
    public Main() { }       
    public static void main(String[] args) {
        // TODO code application logic here
    }
    public void actionPerformed(java.awt.event.ActionEvent e) {
        System.out.println("Main läuft!!");
    }
    protected void finalize() throws Throwable {
        System.out.println("Ende!!");
        super.finalize();
    }    
}

Also, beim starten des Programms soll was gemacht werden und ebenso beim Schliessen.

Danke vorab 🙂

L-ectron-X hat den Titel etwas angepasst.
 
Soll Main für deine GUI zuständig sein, also für Aufbau, Darstellung etc.?

Wenn du willst das ein Ereignis ausgelöst wird, dann musst du den ActionListener auch ner entsprechenden Komponente zuweisen.
Wenn du willst das was ausgegeben wird etc. wenn der User das Fenster schließt, dann guck dir WindowListener an.

Oder schilder genauer was du willst. Und was willst überhaupt mit finalize() ? (mir ist klar was es macht, also bitte keine erklärungen an dieser stelle *g*)
 
Es soll keine GUI sein. Eine stinkormalle Console-Anwendung soll es sein. Ich weiss nur dass EventHAndling ohne Frame Klassen eingeschränkt ist. Gibt es da überhaupt 'ne Möglichkeit die Klasse so zu schreiben dass ich einmal beim öffnen des Programms eine Prozedur durchlaufen lasse (hier: "Main läuft") und beim Schliessen des Programms soll es ja eine andere Prozedur aufrufen (hier: "Ende"). Wenn finalize da falsch ist dann kann es natürlich auch weg, hab nichts dagegen. Hoffe es etwas besser dargestellt zu haben 🙂
 
Code:
public class Main {
    public static void main(String[] args) {
        System.out.println("Main läuft!!");
        //das Programm
        System.out.println("Ende!!");
    }
}

oder wie oder was?
 
Nein natürlich nicht... 🙂
Es soll so aussehen:

Programmstart: startEvent auslösen {Und hier eine Prozedur aufrufen... }
Programmende: ausgelöster Closing- oder closedEvent {Und hier eine andere Prozedur aufrufen... }

hoffe es ist etwas deutlicher... 🙂
 
Code:
public void actionPerformed(java.awt.event.ActionEvent e) {
        System.out.println("Main läuft!!");
    }
wird nie ausgeführt,weil keine Komponente einen Event schmeißt. Die Methode ist sozusagen an keine Komponente gekoppelt.

Code:
protected void finalize() throws Throwable {
        System.out.println("Ende!!");
        super.finalize();
    }
Sie kann, aber muss nicht, ausgeführt werden. Denn es ist nirgends festgelegt ob finalize auch wirklich aufgerufen wird.

Somit ist dein Code sinnlos. :bae:
 
Somit ist dein Code sinnlos.
jo das isser wohl...kenn mich aber mit awt und irgendwelchen listenern nicht aus.

Sach doch mal warum du ne Funktion am anfang aufgerunfen haben willst! Warum rufste se nicht selber auf? Du kannst dir natürlich auch selbst events schicken oder so...
 
also leute,
dass ihr so spät noch hier sind ist zu bewundern. Aber zum Thema...
ich soll ein prog erweitern, es ist ein "kleiner" server. Er soll immer wenn sich einer anmeldet die Clients zählen, ebenso wenn sich diese abmelden und sie mir über eine html-datei bereit stellen. Wenn aber der Server abstürtzen oder aus irgendeinem grund geschlossen werden soll, gewollt oder nicht soll er die Prozedur aufrufen in der steht z.b. ich bin im status "stopped" oder "killed" oder "weg". Anzahl der clients soll dann auf 0 gesetzt werden (normall). Dies soll bevor das Programm geschlossen ist in die html-datei geschrieben werden.

Jetzt ist es was deutlicher denke ich. Nichts davon ist GUI. Alles läuft "so" spricht Console
 
Hallo,

guck dir noch mal die Implementierung eines ActionEvent in der API an. Du hast z.B. kein Attribut deklariert an das du das Ereignis übergibst und es auch nicht mit addActionListener "dazuaddiert". Außerdem hast du kein Objekt erzeugt vom ActionListener, dazu fehlt der Aufruf new bei der Übergabe an die actionPerformed -Methode.

LG
Gabi
 
Gast hat gesagt.:
...
Also, beim starten des Programms soll was gemacht werden und ebenso beim Schliessen.
...
Code:
...
  private static void onStartup() {
    System.out.println("Start");
  }

  private static void onShutdown() {
    System.out.println("Shutdown");
  }

  public static void main(String args[]) {
    
    onStartup();

    ...
    
    Runtime.getRuntime().addShutdownHook(
      new Thread() {
        public void run() {
          onShutdown();
        }
      }
    );
  }
...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben