[Awt] Fenster schließen



  • Hallo
    In dem Buch "Handbuch der Java Programmierung" wird eine Klasse erzeugt mit der man (angeblich) das Fenster schließen kann. Nur leider, obwohl ich das Beispiel 1:1 abgeschrieben habe, will es nicht funktionieren. Hier mal der Programmcode:

    Die Klasse WindowClosingAdapter

    package closingAdapter;
    
    import java.awt.*;
    import java.awt.event.*;
    
    public class WindowClosingAdapter extends WindowAdapter {
    
    	private boolean exitSystem;
    
    	public WindowClosingAdapter( boolean exit_system )
    	{
    		this.exitSystem = exit_system;
    	}
    
    	public WindowClosingAdapter()
    	{
    		this(false);
    	}
    
    	public void WindowClosing( WindowEvent event )
    	{
    		event.getWindow( ).setVisible(false);
    		event.getWindow().dispose( );
    		if( exitSystem )
    			System.exit(0);
    	}
    }
    

    Die Main Klasse

    package test;
    
    import java.awt.*;
    import test.WindowClosingAdapter;
    
    public class AwtTest {
    	public static void main( String[] args )
    	{
    		Frame wnd = new Frame( "title" );
    		wnd.addWindowListener( new WindowClosingAdapter(true) );
    		wnd.setSize( 400, 300 );
    		wnd.setVisible( true );
    	}
    }
    

    was mache ich falsch?



  • Hm auf den ersten Blick sieht das eigentlich korrekt aus. Kannst du mal gucken ob die Methode zum schliessen des Fensters überhaupt aufgerufen wird?

    /edit:
    Ah doch ein Fehler drin:
    Die Methodensignatur von WindowListener lautet:
    void windowClosing(WindowEvent e)
    (das w ist klein geschrieben)

    Du hast das w in deiner Methode groß geschrieben. Das hat zur Folge das die Methode von WindowAdapter nicht überschrieben wird und somit leer bleibt. Deine Methode wird nicht aufgerufen.
    Solche Fehler kannst du übrigends mit der Annotation @Override umgehen.
    Siehe hier: http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html (unter Annotations Used by the Compiler)

    mfg xorm :xmas2:



  • Tatsächlich das wars 🤡 Danke hierfür und auch für den Tipp mit dem @Override 🙂

    mfg


Anmelden zum Antworten