Action über rotes X in der Eke eines JFrames entscheiden.

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, wie kann ich über das rechte "X" rechts oben entscheiden, was passieren soll wenn man draufklickt
Danke schon mal im Voraus Developer_X
 
S

Spacerat

Gast
RTFM-Frage: "add WindowListener()" -> Metode "windowClosing()"...
Obwohl die Funktion dieses "Buttons" Systemweit fest liegt, kann man hier zusätzliche Dinge ausführen.
 

Ebenius

Top Contributor
RTFM-Frage: "add WindowListener()" -> Metode "windowClosing()"...
Obwohl die Funktion dieses "Buttons" Systemweit fest liegt, kann man hier zusätzliche Dinge ausführen.
Nicht nur zusätzliche: [HIGHLIGHT="Java"]frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);[/HIGHLIGHT]
Und dann kann der erwähnte WindowListener ganz alleine entscheiden was er tut.

Developer_X, vergiss nicht, dass der Nutzer eine Erwartungshaltung seinen Applikationen gegenüber hat. Wer da klickt, will ein Fenster schließen. Wenn das nicht funktioniert, ärgert sich der Benutzer in aller Regel.

Ebenius
 

Developer_X

Top Contributor
ich will bevor das Programm beendet wird, einige INformationen speichern, bevor das Frame geschlossen wird, z.B.
die Frame Size, damit der User nächstes mal nicht das frame so ziehen muss, bis es ihm passt, verstehst du?
 

icarus2

Top Contributor
Wenn ich eine Klasse aus JFrame ableite mache ich das in der main-Methode:

Kurzes Beispiel:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class WindowClosing extends JFrame {
  Container c;
  
  WindowClosing() {
    c = getContentPane();
  }
  
  public static void main(String[] args) {
    WindowClosing fenster = new WindowClosing();
    fenster.setTitle("Fenster schliessen");
    fenster.setSize(500,500);
    fenster.setVisible(true);
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Siehe: fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dabei nimmst du die Methode setDefaultCloseOperation() und gibst als Parameter JFrame.EXIT_ON_CLOSE mit. Dadurch wird der JFrame geschlossen.

Ich hoffe, dass die Erklärung in etwa stimmt.

*Edit: Mist, da waren wohl par schneller als ich ^^
 

Developer_X

Top Contributor
ok danke,
aber ich suche nach einem Weg,
mehrere Dinge tun zu können, nicht
EXIT_ON_CLOSE
oder sonstiges,
z.B.
System.out.println("");
System.exit(0);
das wie geht das?
 
S

Spacerat

Gast
ich will bevor das Programm beendet wird, einige INformationen speichern, bevor das Frame geschlossen wird, z.B.
die Frame Size, damit der User nächstes mal nicht das frame so ziehen muss, bis es ihm passt, verstehst du?
...ja verstehe... scheint mir auch eine noble tat.
 

Developer_X

Top Contributor
ok danke,
aber ich suche nach einem Weg,
mehrere Dinge tun zu können, nicht
EXIT_ON_CLOSE
oder sonstiges,
z.B.
System.out.println("");
System.exit(0);
das wie geht das?
 

icarus2

Top Contributor
So sieht Klasse zum Beispiel aus:

Code:
class MeinWindowListener extends WindowAdapter {
    public void WindowClosing(WindowEvent e) {
      System.exit(0);
   }
 }

Soweit ich weiss müsstest du jetzt in der Klasse noch andere Dinge vorher speichern können.
 

mvitz

Top Contributor
Und besser als System.exit(0) ist es wohl, erst auf dem JFrame setVisible(false) aufzurufen, dann alles zu speichern und anschließend noch auf dem JFrame dispose(). System.exit terminiert alle Threads der aktuellen Applikation, wohingegen dispose() den JFrame "geordnet" beendet.
 

Developer_X

Top Contributor
geht aber immer noch nicht!
Code:
class MeinWindowListener extends WindowAdapter
 {
public MeinWindowListener()
{
JFrame f = new JFrame();
f.setVisible(true);
}
    public void WindowClosing(WindowEvent e) {
      System.exit(0);
   }
public static void main(String[]args)
{new MeinWindowListener();
}

 }
 

icarus2

Top Contributor
Also du solltest die Klasse MeinWindowListener als innere Klasse einbauen. Sonst kannst du die Klasse gar nicht von JFrame ableiten, da Mehrfachvererbung in Java ja nicht erlaubt ist.

Hier ein kleines Beispiel, das ich bei meinen äteren Programmen gefunden habe. Der für dich interessante Teil ist rot markiert.

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

//Fensterklasse definieren

public class CSwing_Beispiel extends JFrame {
  JButton m_hänsel, m_und, m_gretel;
  [color=red]
  //Ereignisbehandlung für das Fenster
  //Die Klasse CMeinWindowLauscher wird als innere Klasse eingebaut
  class CMeinWindowLauscher extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
      System.exit(0);
    }
  }
[/color]
  //Ereignisbehandlung für die Steuerelemente
  class CMeinActionLauscher implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      int i;
      
      m_hänsel.setText("verirten");
      m_und.setText("und");
      m_gretel.setText("Gretel");
      
    }
  }
  //Der Konstruktor
  CSwing_Beispiel(String titel) {
    super(titel);
    
    //Button-Instanzen erzeugen
    m_hänsel = new JButton("Hänsel");
    m_und    = new JButton("und");
    m_gretel = new JButton("Gretel");
    
    //Layout-Manager zum Anordnen der Schalter
    getContentPane().setLayout(new FlowLayout());
    
    //Buttons in Fenster aufnehmen
    getContentPane().add(m_hänsel);
    getContentPane().add(m_und);
    getContentPane().add(m_gretel);
    
    //Frame bei einem WindowListener anmelden
    addWindowListener(new CMeinWindowLauscher());
    
    //Schalter bei ActionListener registrieren
    m_hänsel.addActionListener(new CMeinActionLauscher());
    m_und.addActionListener(new CMeinActionLauscher());
    m_gretel.addActionListener(new CMeinActionLauscher());
  }
  
  public static void main(String[] args) {
    CSwing_Beispiel Fenster = new CSwing_Beispiel("Swing");
    Fenster.pack();
    Fenster.setSize(300, 100);
    Fenster.show();
  }
}

Wie du siehst wird die Hauptklasse von JFrame abgeleitet.. sonst kannst du gar keinen JFrame erstellen. Um nun auch aus WindowAdapter ableiten zu können, machst du eine innere Klasse.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G über JButton Action einen anderen Button verändern Java Basics - Anfänger-Themen 7
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
D Java Action abkürzen Java Basics - Anfänger-Themen 9
M Action Event auf Textfield legen Java Basics - Anfänger-Themen 18
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
M Compiler-Fehler Using action listener Java Basics - Anfänger-Themen 1
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
T Button Text mit Action Listener [Hilfe!] Java Basics - Anfänger-Themen 10
G Erste Schritte Action soll zwei sachen ausführen Java Basics - Anfänger-Themen 7
D Button action Event einblenden/ausblenden Java Basics - Anfänger-Themen 6
D Methoden aus Action Listenern aufrufen Java Basics - Anfänger-Themen 7
G textarea action Java Basics - Anfänger-Themen 5
N Variablen aus Action Listener lesen und weiterverarbeiten Java Basics - Anfänger-Themen 12
W OOP Action Listening und MVC-Modell Java Basics - Anfänger-Themen 3
Devil0s while loop, Button action Java Basics - Anfänger-Themen 8
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
P ActionListener Action Event Java Basics - Anfänger-Themen 5
A action listener Java Basics - Anfänger-Themen 8
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
J Action Listener Java Basics - Anfänger-Themen 2
M Frage zur Methode Action.putValue(String,Object) Java Basics - Anfänger-Themen 5
S Action Listener Java Basics - Anfänger-Themen 6
M Action als neue Klasse Java Basics - Anfänger-Themen 2
S Action Listener Funktioniert nicht Java Basics - Anfänger-Themen 6
G Button Action Event starten Java Basics - Anfänger-Themen 4
G Nicht benannte Buttons - Wenn gedrückt > Action Java Basics - Anfänger-Themen 24
G Frage zur Action? Java Basics - Anfänger-Themen 4
G nach action Script aufrufen Java Basics - Anfänger-Themen 3
D problem mit einem action Java Basics - Anfänger-Themen 6
E Action und Accelerator Java Basics - Anfänger-Themen 2
S Problem mit Action Listener Java Basics - Anfänger-Themen 7
M Fehler im Action Listener Java Basics - Anfänger-Themen 9
megachucky Action-/Change Listener funktionieren nicht. Java Basics - Anfänger-Themen 2
G Auswahl in DropDown feldern in JSP seiten als Action Aufruf Java Basics - Anfänger-Themen 2
C Frage bzgl. action von Button Java Basics - Anfänger-Themen 6
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
B großzügiges Pixelraster über Bildschirm legen Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
S Java über SSH Java Basics - Anfänger-Themen 13
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
W char über die Konsole? Java Basics - Anfänger-Themen 7
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
J Variablenzugriff über string Java Basics - Anfänger-Themen 18
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
J MySQL Datumsabfrage über ResultSet in Java-Servlet Java Basics - Anfänger-Themen 4
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben