Inicjalizacja okna

0

Cześć,

dzisiaj dopiero zacząłem okienkową Javę. Udało mi się stworzyć zwykłe okno obsługujące zamykanie, jednak teraz chciałem to tak zgrabnie upakować do jednej klasy, jednak gdy tak robię mam błędy, że muszę zainicjalizować wszystkie zdarzenia windowDeactivate WindowClosed etc., a ja praktycznie chciałem tylko WindowClosing. Mój kod wygląda w taki sposób:

class InitFrame extends Frame implements WindowListener {
	InitFrame( String title ) {
		super( title );
		
	}
	
	public void WindowClosing() {
		System.exit( 0 );
	}
}

co mógłbym zrobić aby mieć to upakowane w jednej klasie + mogąc ominąć obsługę tamtych zdarzeń (w sensie żeby było jakieś domyślne)?

poprzednio robiłem to jakoś w tym stylu:

class WndAdapter extends WindowAdapter {
	public void windowClosing( WindowEvent e ) {
		System.exit( 0 );
	}
}

public class gfx {
	public static void main( String args[] ) {
		Frame okno = new Frame( "tytul" );
		
		okno.addWindowListener( new WndAdapter() );
	}
}

i nie musiałem definiować tamtych pozostałych zdarzeń.

Pozdrawiam i dziękuję za pomoc.

//edit

w taki sposób sobie poradziłem, choć nie wiem czy on jest dobry (w sensie czy profesjonalny ;P):

class InitFrame extends Frame {
	class WndL extends WindowAdapter {
		public void windowClosing( WindowEvent e ) {
			System.exit( 0 );
		}
	}	
	InitFrame( String title ) {
		super( title );
		addWindowListener( new WndL() );
		
	}
}
0

Ja bym to zrobił tak:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test extends JFrame{
	public test(){
		setTitle("test");
		setSize(400,300);
	}
	
	public static void main(String[] args){
		test frame = new test();
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			} 
		});
		
	}
}

Pozdrawiam

0

@paweln1986, pytanie dotyczyło klasy Frame. Dla JFrame najprościej jest tak:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test extends JFrame{
        public test(){
                setTitle("test");
                setSize(400,300);
        }
       
        public static void main(String[] args){
                test frame = new test();
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}
0

Wystarczy zamiast JFrame rozszerzyć Frame. Ale faktycznie nie pomyślałem o setDefaultCloseOperation, szkoda ze nie jest dostępny w klasie Frame.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1