Fenster schließen - Button

Illa Killa

Mitglied
Mahlzeit, hab mir zwar schon zig andere Beiträge zu dem Thema durchgelesen, aber irgendwie scheint das für mich ein unüberwindbares Hindernis zu sein. Hab mir mit Swing mehrere Fenster gebastelt, jetzt möchte ich da noch nen Button haben über den ich das aktuelle Fenster schließen kann, allerdings möchte jeglicher Code den ich da reinprogrammiere nicht funktionieren
Java:
package instdata;

/**
 *
 * @author eminkey
 */
public class Stoerungseingabe extends javax.swing.JFrame {

    /** Creates new form Stoerungseingabe */
    public Stoerungseingabe() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    this.DISPOSE_ON_CLOSE();

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Stoerungseingabe().setVisible(true);
                
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    private javax.swing.JTextField jTextField8;
    private javax.swing.JTextField jTextField9;
 

Flown

Administrator
Mitarbeiter
Java:
package test;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Test extends JFrame{
	
	public Test(String text){
		this.setTitle(text);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JButton but = new JButton("Close");
		
		but.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				Test.this.dispose();
			}
		});
		
		add(but);
		
		this.pack();
		this.setVisible(true);
	}

	public static void main(String[] args) {
		Test t = new Test("Test");
	}
}

Ich sehs nicht, darum denk ich das du einen Button einen ActionListener adden musst.
 

Illa Killa

Mitglied
Hmmm junge junge is das kompliziert...

Java:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        new Stoerungseingabe().setVisible(true);
            }

Das is so einfach nen Fenster zu öffnen....dann muss das mit dem schließen doch genauso einfach sein...sicher ich könnte einfach auf das X oben rechts klicken aber das wär ja wieder zu einfach:)
 
T

Tomate_Salat

Gast
Das is so einfach nen Fenster zu öffnen....dann muss das mit dem schließen doch genauso einfach sein...sicher ich könnte einfach auf das X oben rechts klicken aber das wär ja wieder zu einfach:)

Jo klar geht das:

Java:
import javax.swing.JFrame;
import javax.swing.SwingUtilities;


public class DemoF
{
	public static void main(String[] args)
	{
		final JFrame closeWithoutExit	= new JFrame("Schließe mich");
		closeWithoutExit.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		
		final JFrame closeByExit		= new JFrame("mich nciht!");
		closeByExit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		closeWithoutExit.setBounds(10, 10, 200, 100);
		closeByExit.setBounds(220,10,200,100);
		
		SwingUtilities.invokeLater(new Runnable()
		{
			@Override
			public void run()
			{
				closeByExit.setVisible(true);
				closeWithoutExit.setVisible(true);
			}
		});
	}
}

Anmerkung
eigentlich würde als Beispiel auch:
Java:
final JFrame closeWithoutExit	= new JFrame("Schließe mich");
		closeWithoutExit.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		closeWithoutExit.setBounds(10, 10, 200, 100);
		
		SwingUtilities.invokeLater(new Runnable()
		{
			@Override
			public void run()
			{
				closeWithoutExit.setVisible(true);
			}
		});
ausreichen. Den 2ten JFrame (closeByExit) habe ich dazu gepackt, damit du siehst: das Programm läuft weiter.

MFG

Tomate_Salat
 
Zuletzt bearbeitet von einem Moderator:

Illa Killa

Mitglied
Habs mit
Java:
Stoerungseingabe.this.dispose();
hinbekommen, der actionlistener war weiter oben schon eingebaut. Jetzt bin ich happy :D
 
T

Tomate_Salat

Gast
Habs mit
Java:
Stoerungseingabe.this.dispose();
hinbekommen, der actionlistener war weiter oben schon eingebaut. Jetzt bin ich happy :D

dispose(); würde ausreichen :-/. Die Klasse vornedran kann man sich sparen, man sollte wissen, in welcher man sich befindet beim Programmieren :-/.

Dann schließt sich das Programm aber nicht wenn sie nur nicht sichtbar sind!
Naja, man kann auch beim hauptfenster
Java:
.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setzen. Aber ok, die dispose-variante gibt mehr sicherheit, dass das Programm nicht doch iwie im Hintergrund weiterrennt. Dann kann man JFrame.DISPOSE_ON_CLOSE bei den anderen Fenstern setzen.
 

mvitz

Top Contributor
Er muss halt aus dem ActionListener heraus auf die Klasse drumherum (den JFrame) zugreifen. Da hilft dann nur Test.this.dispose().
Code: siehe weiter oben (Antwort von Flown)
 
T

Tomate_Salat

Gast
Java:
public class DemoF extends JFrame
{
	public DemoF(String text){
        setTitle(text);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton but = new JButton("Close");
        
        but.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent arg0) {
                dispose();
            }
        });
        
        add(but);
        
        this.pack();
        this.setVisible(true);
    }
 
    public static void main(String[] args) {
        DemoF t = new DemoF("Test");
    }

}

funktioniert bei mir ohne Probleme. Er darf hier nur kein [c]this.dispose();[/c] machen. Was geht ist [c]Klasse.this.dispose();[/c] oder kürzer, einfach nur: [c]dispose();[/c]
 
Zuletzt bearbeitet von einem Moderator:

Illa Killa

Mitglied
Das ist der Code für mein Fenster, ich muss dazu erwähnen, dass ich die Oberfläche komplett über Swing erstelle und nicht händich per Code, deshalb kann ich alles was nach private void init Components steht nicht händisch ändern sondern nur über die Swing-Tools
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Stoerungseingabe.java
 *
 * Created on 29.07.2010, 10:45:33
 */

package instdata;

/**
 *
 * @author eminkey
 */
public class Stoerungseingabe extends javax.swing.JFrame {

    /** Creates new form Stoerungseingabe */
    public Stoerungseingabe() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
@SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

//hier steht noch sehr viel mehr fürs Layout, der Button 3 ist nur ein Auszug

jButton3.setText(resourceMap.getString("jButton3.text")); // NOI18N
        jButton3.setName("jButton3"); // NOI18N
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        }
  private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    Stoerungseingabe.this.dispose(); // Fenster schließen

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Stoerungseingabe().setVisible(true);
                
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JComboBox jComboBox3;
    private javax.swing.JComboBox jComboBox4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    private javax.swing.JTextField jTextField8;
    private javax.swing.JTextField jTextField9;
    // End of variables declaration

}
 
T

Tomate_Salat

Gast
Ja das du das nicht händisch erstellt hast, habe ich schon nach deinem ersten Post erkannt. Ja kannst es auch so lassen. Meine Methode geht garantiert auch. Nur bei der kurzen variante musst du aufpassen, dass du nicht eine Methode verwendest, die das Objekt (hier: ActionListener) bereits besitzt, sonst wird nämlich die Aufgerufen. Insofern bist du mit der Ausführlichen auf der sichereren Seite, wenn du die Methoden der anderen Klasse nicht gerade im Kopf hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
2 Zusätzliches Fenster mit OK-Button schließen AWT, Swing, JavaFX & SWT 7
H Fenster mit dem x-Button schließen AWT, Swing, JavaFX & SWT 5
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
T Fenster schließen AWT, Swing, JavaFX & SWT 4
E JavaFX JavaFX Fenster nicht schließen AWT, Swing, JavaFX & SWT 4
thet1983 offne Fenster gemeinsam schließen AWT, Swing, JavaFX & SWT 8
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
M Swing Einzelne Fenster schließen AWT, Swing, JavaFX & SWT 2
M Swing ButtonListener Fenster schließen AWT, Swing, JavaFX & SWT 15
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
S Fremdes Fenster schließen AWT, Swing, JavaFX & SWT 2
E Fenster schließen und ein anderes öffnen AWT, Swing, JavaFX & SWT 9
X Öffnen Schließen Fenster AWT, Swing, JavaFX & SWT 4
0 Fenster schließen AWT, Swing, JavaFX & SWT 2
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
D Fenster schließen AWT, Swing, JavaFX & SWT 7
S AWT Fenster schließen und Programm beenden AWT, Swing, JavaFX & SWT 10
B Fenster schließen AWT, Swing, JavaFX & SWT 4
G Swing Fenster schließen AWT, Swing, JavaFX & SWT 6
E Fenster schließen über X AWT, Swing, JavaFX & SWT 8
D aktuells fenster + letztes fenster schließen AWT, Swing, JavaFX & SWT 5
R [gelöst]Fenster schließen - trotz Endlosschleife in der Paint-Methode? AWT, Swing, JavaFX & SWT 3
A Eins von zwei offnen Fenster/Frames schließen AWT, Swing, JavaFX & SWT 2
J Fenster schließen ohne das Programm zu beenden AWT, Swing, JavaFX & SWT 3
F Programmiertes Fenster schließen AWT, Swing, JavaFX & SWT 3
P SWT Fenster schließen abfangen AWT, Swing, JavaFX & SWT 4
S Einzelne Frame Fenster schließen AWT, Swing, JavaFX & SWT 2
S Einzelne Frame Fenster schließen AWT, Swing, JavaFX & SWT 2
G Wie schließen Fenster automatisch? AWT, Swing, JavaFX & SWT 12
W JDialog ohne zum Fenster Schließen AWT, Swing, JavaFX & SWT 2
D Fenster schließen mit JButton AWT, Swing, JavaFX & SWT 2
K Fenster lässt sich nicht schließen =( AWT, Swing, JavaFX & SWT 16
B Fenster soll sich bei auf Druck auf ESC schließen AWT, Swing, JavaFX & SWT 5
G Nur ein Fenster schließen? AWT, Swing, JavaFX & SWT 3
G Fenster schließen? AWT, Swing, JavaFX & SWT 4
X Fenster schließen aber nicht beenden AWT, Swing, JavaFX & SWT 9
S Bei ESC Fenster schließen AWT, Swing, JavaFX & SWT 6
A Fenster über Menü schließen AWT, Swing, JavaFX & SWT 2
G Fenster anzeigen und schließen? AWT, Swing, JavaFX & SWT 15
G Fenster bzw. Dialog schließen AWT, Swing, JavaFX & SWT 3
S Fenster schließen?! AWT, Swing, JavaFX & SWT 5
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L Hintergrundbild im Fenster darstellen AWT, Swing, JavaFX & SWT 9
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
P JavaFX Fenster lädt nicht mehr AWT, Swing, JavaFX & SWT 4
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
K Fenster welches den Sieger anzeigt AWT, Swing, JavaFX & SWT 5
O JavaFX Fenster scließen AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
L Input aus Sub-Fenster Startfenster übergeben AWT, Swing, JavaFX & SWT 5
B AWT Fenster schließt nicht AWT, Swing, JavaFX & SWT 2
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
windl Transparentes / halbtransparentes Fenster AWT, Swing, JavaFX & SWT 1
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben