# Per Button Klick Fenster schließen?<



## Tron (12. Okt 2009)

Hey liebe Community,
ich habe mich schon im Forum umgesehen kann aber mit den gefundenen Antworten nicht wirklich etwas anfangen .....bin erst noch java anfänger daher auf etwas Hilfe angewiesen 

Und zwar würde ich gerne in folgendem Code an meinen Button, ganz unten den Befehl zum Fenster schließen dazuschreiben, aber ich weiß nicht wie ich das hinzufügen kann...es gibt ja die Möglichkeit direkt zu schließen oder per "wollen sie wirklich schließen...ja oder nein?" auswahl da Fenster zu schließen. Wenn mir jemand beide Lösungen dazuschreiben will, würde ich mich freuen....nun zum Quellcode ...und nicht vergessen ist nur ein Anfänger Progrämmchen ...i am still learning :rtfm:
[JAVA=0]import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;

import javax.swing.*;
import javax.swing.JFrame.*;


public class Project 
{
 static JFrame f = new JFrame();
            static JComboBox choice = new JComboBox();
            static JComboBox bob = new JComboBox();
      public static void main(String[] args) 
      {     

            f.setSize( 400, 400);
            f.setBackground(Color.green);
            f.setLocation (500, 150);
            f.setTitle ("Project1");
            f.setVisible (true);
            f.add( new JLabel ("Bitte Geben Sie die folgenden benötigten Datensätze ein "));
            f.add( new JLabel ("Bitte geben Sie ihren Namen ein"));
            f.setLayout( new GridLayout(20     , 10));
            f.add( new JTextField());
            f.add( new JLabel ("Bitte geben Sie ihren Vornamen ein"));
            f.add( new JTextField());
            f.add( new JLabel (" Bitte wählen Sie ihr Geburtsjahr aus"));
            //f.setLayout (new FlowLayout());
            choice.addItem("1960"); 
            choice.addItem("1961");
            choice.addItem("1962");
            choice.addItem("1963");
            choice.addItem("1964");
            choice.addItem("1965");
            choice.addItem("1966");
            choice.addItem("1967");
            choice.addItem("1968");
            choice.addItem("1969");
            choice.addItem("1970");
            choice.addItem("1971");
            choice.addItem("1972");
            choice.addItem("1973");
            choice.addItem("1974");
            choice.addItem("Keine Ahnung wann du Geburtstag hast ");
            f.add( choice );
            f.add( new JLabel ("Bitte Wählen sie ihren Geburtsmonat aus"));
            bob.addItem("Januar"); 
            bob.addItem("Februar");
            bob.addItem("März");
            bob.addItem("April");
            bob.addItem("Mai");
            bob.addItem("Juni");
            bob.addItem("Juli");
            bob.addItem("August");
            bob.addItem("September");
            bob.addItem("Oktober");
            bob.addItem("November");
            bob.addItem("Dezmeber");
            f.add( bob );
            f.add( new JLabel ("Postleihzahl"));
            f.add(new JFormattedTextField(NumberFormat.getIntegerInstance()));f.add( new JLabel ("Ort"));
            f.add( new JTextField());
            f.add( new JLabel ("Land"));
            f.add( new JTextField());
            f.add( new JButton("Beenden"));
            f.pack();


            }



      }
[/code]

Danke schonmal im Vorraus


----------



## Heady86 (12. Okt 2009)

```
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
```


----------



## eRaaaa (12. Okt 2009)

Heady86 hat gesagt.:


> ```
> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
> ```



da würde das fenster, bzw das programm komplett beendet werden. bei der anderen vorgehensweise, müsstest du z.b. folgendes machen:

a) dem button zum schließen, einen actionlistener anhängen. der listener ruft dann eine methode mit z.b. einem jdialog o.ä. auf, mit der frage ob das fenster wirklich geschloßen werdne soll--> wo wir auch zu b) kommen

b) evtl. auch einen windowlistener, der die gleiche methode aufruft, wie der listener vom button.

c) das ergebnis des dialogs bearbeiten: frage wurde mit ja beanwortet --> System.exit(0);
otherwise --> tue nichts


----------



## Michael... (12. Okt 2009)

Prinzipiell müsste es mit Deinem Code so gehen:
[JAVA=65]JButton button;
f.add(button = new JButton("Beenden"));
button.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent evt) {
		f.dispose();
	}
});[/code]
Wenn die JVM ebenfalls beendet werden soll kann man da noch ein 
	
	
	
	





```
System.exit(0);
```
 reinpacken.

Noch ein paar Hinweise:
-alles in die main zu schreiben ist eher unschön, besser ist sowas in den Konstruktor einer Klasse zu schreiben.
- wenn Du am Ende f.pack() aufrufst kannst Du Dir das f.setSize() sparen
- allgemein sollte man erst den LayoutManager setzen, dann die Komponenten einfügen und zum Schluss setVisible(true) aufrufen.


----------



## Tron (12. Okt 2009)

hey schonmal danke für die antworten @Hedy  danke trotzdem....hmm ja gut ich verstehe was du sagst aber weiß nicht wie ich das einschreiben soll....zb kein beispiel code vorhanden


----------



## Tron (12. Okt 2009)

hopla^^....da hatte ich wohl die F5 taste zu spät gedrückt  vielen dank @Michael... teste es gleich mal 
bezüglich deiner Tipps...werde sie mir merken...bin aber erst noch ein anfänger


----------



## Michael... (12. Okt 2009)

Tron hat gesagt.:


> bin aber erst noch ein anfänger


Deswegen die Hinweise. Willst ja hoffentlich auch noch was dazulernen ;-)


----------



## Tron (12. Okt 2009)

funktioniert tadellos  rechtherzlichen danke für die aufmerksamkeit


----------

