Schließen von Fenstern über Standartfunktion (X)

lyjlq

Mitglied
Hallo Forum,

da bin ich wieder und ich habe ein Problem mit der Umsetzung MVC Model.
Mein Programm Funktionier soweit recht gut. Nun will ich das beim Schließen vom MainWindow (View) über das X veranlassen das ich Über MainWindowController (Controller) die gewünschte Methode aus MainWindowProgramm (Model) ausführen „undschuess“.

Wie richte ich den Listener für das X im MainWindow ein.


MainWindowStart
Java:
/*
 * Die Klasse soll die Start Klasse sein die das Haupt Fenster mit menu Startet und anzuzeigen.
 * Es sollen auch alle Komponenten die benötigt werden Initialisieren.
 */
public class MainWindowStart {
	static MainWindowController mainController;
	static MainWindow mainWindow;
	static MainWindowProgramm mainProgramm;

	public static void main(final String[] args) {
		mainProgramm=new MainWindowProgramm();
		mainWindow=new MainWindow();
		mainController= new MainWindowController(mainWindow, mainProgramm);
		
		mainWindow.setVisible(true);
	}
	
}

MainWindow
Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;


public class MainWindow extends JFrame{
	   private static final long serialVersionUID = 6224616932979937726L;
	   
//	   Menu Einträge
	   private JMenu jmDatei = new JMenu("Datei");
	   private JMenu jmListe = new JMenu("Liste");
	   private JMenu jmSort = new JMenu("Sort");
	   private JMenu jmGui = new JMenu("Gui");
	   private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	   private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	   private JMenuItem jmiBeenden = new JMenuItem("Beenden");
..
..
..

	   
	public MainWindow() {
	    super("Kassenbuch Ver 1");
	    initMainWindow();
	}
		
	private void initMainWindow() {
	    this.setLayout(new BorderLayout());
	    this.setBounds(200, 200, 600, 800);
			
	     JMenuBar mainWindowsMenue = new JMenuBar();
	     jmDatei.setMnemonic('D');
	     mainWindowsMenue.add(createMenuDatei());
	     jmListe.setMnemonic('L');		     
	     mainWindowsMenue.add(createMenuListe());
	     jmSort.setMnemonic('S');
	     mainWindowsMenue.add(createMenuSort());
	     jmGui.setMnemonic('G');
	     mainWindowsMenue.add(createMenuGui());
	     setJMenuBar(mainWindowsMenue);
	}   

             private JMenu createMenuDatei(){
	   jmDatei.add(jmiOeffnen);
	   jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
	   jmDatei.add(jmiSpeichern);
	   jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
	   jmDatei.addSeparator();
	   jmDatei.add(jmiBeenden);
	   jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
	   return jmDatei;
	}
	   
	private JMenu createMenuListe() {
	   jmListe.add(jmiListe);
	   jmiListe.setAccelerator(KeyStroke.getKeyStroke('L', Event.CTRL_MASK));
	   return jmListe;
	}
..
..
..
..
             /*
	  * Funktionen bereitstellen, mit denen man später aus 
	  * dem Contoler die nötigen Listener hinzufügen kann
	*/
		
	public void setBeendenListener(ActionListener I) {
	   this.jmiBeenden.addActionListener(I);
	}
	public void setOeffnenListener(ActionListener I) {
	   this.jmiOeffnen.addActionListener(I);
	}
	public void setSpeichernListener(ActionListener I) {
	   this.jmiSpeichern.addActionListener(I);
	}
..
..
..
}

MainWindowcontroller
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/*
 * Der Controller muss beide das Window und das Programm kennen 
 * da dieser für di Kommunikation zwischen den Biden sorgt.
 */
public class MainWindowController{
	private MainWindow _MainWindow;
	private MainWindowProgramm _MainWindowProgramm;
	
	public MainWindowController(MainWindow mainWindow, MainWindowProgramm mainWindowProgramm) {
		this._MainWindowProgramm=mainWindowProgramm;
		this._MainWindow=mainWindow;
		
		addListener();
	}
	
	/*
	 * Die Listener, die Wir aus den Internen Klassen generieren
	 * werden  dem Window bekannt gemacht, sodass diese mit 
	 * uns(dem Controler) kommunizieren kann
	 */
	
	private void addListener() {
		this._MainWindow.setBeendenListener(new  BeendenListener());
		this._MainWindow.setOeffnenListener(new OeffnenListener());
		this._MainWindow.setSpeichernListener(new SpeichernListener());
		this._MainWindow.setSortKnUListener(new SortKnUListener());
		this._MainWindow.setSortKnDListener(new SortKnDListener());
		this._MainWindow.setSortKtUListener(new SortKtUListener());
		this._MainWindow.setSortKtDListener(new SortKtDListener());
		this._MainWindow.setSortKwUListener(new SortKwUListener());
		this._MainWindow.setSortKwDListener(new SortKwDListener());
		this._MainWindow.setListeListener(new ListeListener());
		this._MainWindow.setjmiKNListener(new KNListener());
		this._MainWindow.setjmiKLListener(new KLListener());
		this._MainWindow.setjmiKAListener(new KAListener());
		this._MainWindow.setjmiKAeListener(new KAeListener());
		
	}
	
	class BeendenListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			_MainWindowProgramm.undschuess();
		}
	}
	class OeffnenListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			_MainWindowProgramm.Oeffen();
		}
	}
	class SpeichernListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			_MainWindowProgramm.Speichern();
		}
	}
..
..
..
..

}

MainWindowProgramm
Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
 * Das MainWindowProgramm ist unabhänging von anderen 
 * Klassen und weiß nicht was um Ihn herum geschieht.
 * Es ist völlig egal ob man dieses Model aus einem
 * fenster ocer einer Konsole Eingabe bertwendet - beiden würde funktionieren.
 */
public class MainWindowProgramm{

	//	Controller
	static KontoNeuController controllerKontoNeu;
	static KontoAendernController controllerKontoAendern;
	static KontoLoeschenController controllerKontoLoeschen;
	static KontoAnzeigenController controllerKontoAnzeigen;
	static KontenListeController controllerKontenListe;
//	Model
	static KontoModel modelKontoModel;
	static KontenListeModel modelKontenListeModel;
//	View
	static KontoGui viewKontoGui;
	static KontenGui viewKontenGui;
	static MainWindow mainWindow;
	
	private Konten konten = new Konten();
	private List<Konto> kontoListe = new ArrayList<Konto>();
	
	private String s1="";
	
	public void undschuess() {
		System.out.println(s1);
		System.exit(0);
	}
	public void Oeffen() {
		kontoListe.clear();
		kontoListe.addAll(konten.KassenbuchKontoLesen());
	   	konten.setKontenListe(kontoListe);
	}
	public void Speichern() {
		   kontoListe.clear();
		   kontoListe.addAll(konten.getKontenListe());
		   konten.KassenbuchKontoSichern(kontoListe);		   		
	}
..
..
..
..
}

So das sollte es gewesen sein. Wenn noch was fehlt bitte melden.

Danke für die Hilfe.
 

lyjlq

Mitglied
Danke Klaus,

das habe ich, aber ich bekomme das Fenster schließen nicht in das MVC Modell rein.
Wie kann ich aus den WindowConstants in eine ActionListener in der Klasse MainWindow,
und wie nehme ich es in der Klasse MainWindowControler an.

Gruß

lyjlq
 

KrokoDiehl

Top Contributor
Ohne allen Code gelesen zu haben, aber grundsätzlich geht die "X"-Behandlung bei JFrames wie folgt, wenn man sie völlig selbstständig implementieren will:

Java:
final JFrame frame = ...
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent event) {
        // hier hat der Anwender auf das X geklickt
        // Resourcen freigeben etc
        frame.setVisible(false);
        frame.dispose(); //wichtig! 
    }    
});

In deinem Code fehlt dieser WindowListener wenn ich das recht sehe, das Übertragen meines Minimalbeispiels auf deinen Fall überlasse ich dir ;-)
 

lyjlq

Mitglied
Hallo timbeau, Hallo KrokoDiehl,

Ich glaub ich muss mich besser ausdrücken. Wie ich das „setDefaultCloseOperatin“ benutze ist mir bekannt und das ich dann ein Methode aus führen kann auch.
Aber wie bekomme ich das so hin das nach dem Auslösen es so aus sieht als ob der Benutzer z.B. „setBeendenListener“ in „MainWindow“ aktiviert hat.
Ich will nicht das schöne Konzept wegen so was aushebeln und Programmkode im „View“ bereich einfügen.

Oder anders gesagt was muss ich bei „//hier hat der Anwender auf das X geklickt“ einfügen damit es so aussieht als ob der Anwender „setBeendenListener“ aktiviert hätte.
Damit der Rest vom MVC Moder so weiter funktioniert wie bekannt ist.
Mit einer Anpassung im Controller könnte ich auch noch leben.

Gruß
lyjlq
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Schönheit liegt im Auge des Betrachters. Prinzipiell ist es egal ob auf der GUI ein ActionEvent, WindowEvent oder sonst was ausgelöst wird, der Controller muss eine Info bekommen aus der schließen kann was zu tun ist. Ich würde daher auch nicht die ActionListener im Controller implementieren und wenn doch, was ist (in dem Kontext) der Unterschied zwischen einem ActionListener und WindowListener? Man könnte den WindowListener genauso im Controller implementieren. Zwar hangt der Controller eng mit der View zusammen, aber so hat man meiner Meinung nach eine viel zu enge Kopplung, wenn die View um einen Button o.ä. erweitert wird muss man dieser gleich eine neue set-Methode verpassen und im Controller einen neuen ActionListener anlegen. Aber egal.

Hier mal eine Möglichkeit um Dein Problem zu lösen:
Java:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;


public class WindowControlDemo {
	
	interface ControllerInterface {
		public void shutdown();
	}
	
	class WindowView {
		private ControllerInterface controller;
		
		public WindowView() {
			JFrame frame = new JFrame();
			frame.setBounds(0, 0, 200, 200);
			frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
			frame.addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					controller.shutdown();
				}
			});
			
			frame.setVisible(true);
		}
		
		public void setController(ControllerInterface controller) {
			this.controller = controller;
		}
	}
	
	class Controller implements ControllerInterface {
		public Controller(WindowView view) {
			view.setController(this);
		}

		public void shutdown() {
			System.out.println("shuting down VM");
			System.exit(0);
		}
	}
	
	private WindowControlDemo() {
		new Controller(new WindowView());
	}
	
	public static void main(String[] s) {
		new WindowControlDemo();	
	}
}
 

lyjlq

Mitglied
Hallo Michael,

danke für Deinen Lösungsansatz, er hat mich aus meiner Seligkeit (der Meinung, dass ich es verstanden habe) heraus gerissen.;(
Deswegen hat es länger gedauert bis ich Antworte.
Mein Anfangsproblem habe ich selber gelöst. :D Aber nicht grade Elegant. :oops: Hier bin ich noch offen für Lösungen. :toll:
Der Einwand von Dir ist gut und Berechtigt, und ich habe versucht diesen um zu setzen. Ich habe im Forum gesucht und Google befragt, aber anscheinend stehe ich mir selber im weg. :rtfm:

Prinzipiell ist es egal ob auf der GUI ein ActionEvent, WindowEvent oder sonst was ausgelöst wird, der Controller muss eine Info bekommen aus der schließen kann was zu tun ist.

Irgendwie versteh ich noch nicht wie ich die Signale Erstellt, Empfangen und Weiter zu leiten.???:L
Hier ist ein Kleines in sich abgeschlossenes Programm wo man Vieles ausprobieren kann.
Viehleicht könntet Ihr mir daran das erklären.

MVC_Start
Java:
/*
 * Die Klasse soll die Start Klasse sein die das Haupt Fenster mit menu Startet und anzuzeigen.
 * Es sollen auch alle Komponenten die benötigt werden Initialisieren.
 */
public class MVC_Start
{
	static MVC_Controller mvc_Controller;  // MVC_Controller ist der Classen name
																	// mvc_Contoller werden die Methoden aufgerufen. 
	static MVC_View mvc_View;
	static MVC_Model mvc_Model;

	public static void main(String[] args)
	{
		mvc_Model = new MVC_Model();		// Hier werden die Objecte erstellt
		mvc_View = new MVC_View();
		mvc_Controller = new MVC_Controller(mvc_View, mvc_Model);	// Hir wird der Controller definiert. 
		
		mvc_View.setVisible(true);					// Hier wird das Fenster Akteviet.
	}
}

MVC_Interface
Java:
import java.awt.event.ActionListener;

public interface MVC_Interface{
	public void setBeendenListener(ActionListener I);;
	public void setOeffnenListener(ActionListener I);;
	public void setSpeichernListener(ActionListener I);;
}

MVC_View
Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MVC_View extends JFrame  implements MVC_Interface
{
private static final long serialVersionUID = -3972168349874863177L;
	private JMenu jmDatei = new JMenu("Datei");
	private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	private JMenuItem jmiBeenden = new JMenuItem("Beenden");
	private JButton jbX = new JButton("X");
	private JButton jbOeffnen = new JButton("Öffnen");
	private JButton jbSpeichern = new JButton("Speichern");
	private JButton jbBeenden = new JButton("Beenden");
	private JPanel logPanel = new JPanel();
	private JTextArea logText = new JTextArea();
	
	public MVC_View()  {
        super("MVC");
        init();
	}
	
	private void init() {
		this.setBounds(200, 200, 400, 200);
		this.setJMenuBar(mainMenue());
		this.add(mainPanel());
		this.setDefaultCloseOperation(MVC_View.DO_NOTHING_ON_CLOSE);
		this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
            	jbX.doClick();
            }
        });

		this.setVisible(true);
	}
	private JPanel mainPanel() {
		JPanel mainWindowPanel = new JPanel();
		mainWindowPanel.setLayout(new BorderLayout());
		mainWindowPanel.add(BorderLayout.NORTH, mainSuedPanel());
		mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
		return mainWindowPanel;
	}
	private JPanel mainSuedPanel() {
		JPanel mainSuedWindowPanal = new JPanel();
		mainSuedWindowPanal.add(jbOeffnen);
		mainSuedWindowPanal.add(jbSpeichern);
		mainSuedWindowPanal.add(jbBeenden);
		return mainSuedWindowPanal;
	}
//	 JScrollPane erzeugen
	private JScrollPane mainLogPanel() {
		JScrollPane scroll = new JScrollPane(logPanel);
		scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
		scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
		logText.setTabSize(80);
		logText.setWrapStyleWord(true);
		logText.setText("Das ist ein Teset"+"\n");
		logPanel.add(logText);
		return scroll;
	}
	
	private JMenuBar mainMenue() {
		JMenuBar mainWindowsMenue = new JMenuBar();
		jmDatei.setMnemonic('D');
		mainWindowsMenue.add(createMenuDatei());
		return mainWindowsMenue;
	 }
	 	
	 private JMenu createMenuDatei()	   {
		 jmDatei.add(jmiOeffnen);
		 jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
		 jmDatei.add(jmiSpeichern);
		 jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
		 jmDatei.addSeparator();
		 jmDatei.add(jmiBeenden);
		 jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
		 return jmDatei;
	}
	   
	public void updateLog(String log) {
		logText.setText(log);
		logPanel.add(logText);
//		System.out.println(logText);
		System.out.println(log);
	}
//	************************************************ Was ist Geklickt ***********************************

	public void setBeendenListener(ActionListener I) {
        this.jmiBeenden.addActionListener(I);
        this.jbX.addActionListener(I);
        this.jbBeenden.addActionListener(I);
     }
	public void setOeffnenListener(ActionListener I) {
        this.jmiOeffnen.addActionListener(I);
        this.jbOeffnen.addActionListener(I);
     }
     public void setSpeichernListener(ActionListener I) {
        this.jmiSpeichern.addActionListener(I);
        this.jbSpeichern.addActionListener(I);
     }
}

MVC_Controller
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MVC_Controller  //implements MVC_Interface
{	
	private MVC_View mvc_View;
	private MVC_Model mvc_Model;
	String Log;
	
	public MVC_Controller(MVC_View mvc_View, MVC_Model mvc_Model) {
		this.mvc_Model = mvc_Model;
		this.mvc_View = mvc_View;
		this.mvc_View.setBeendenListener(new Beenden());
		this.mvc_View.setOeffnenListener(new Oeffnen());
		this.mvc_View.setSpeichernListener(new Speichen());
	}
	
	class Beenden implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mvc_Model.undschuess();
		}
	}
	class Oeffnen implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Log = mvc_Model.Oeffen();
			mvc_View.updateLog(Log);
		}
	}
	class Speichen implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Log = mvc_Model.Speichern();
			mvc_View.updateLog(Log);
		}
	}
}

MVC_Model
Java:
public class MVC_Model 
{
	public String log="";
	public void undschuess() {
		log +="Programm Beenden"+"\n";
		System.out.println(log);
		System.exit(0);
	}
	public String Oeffen() {
//Hier würde eine Datei eingelesen werden.
		log += "Datei Laden"+"\n";
		return log;
	}
	public String Speichern() {
//Hier würde eine Datei gespeicher werden.
		log += "Datei Speichern"+"\n";
		return log;
	}
}

Danke und Gruß

LYJLQ
 

lyjlq

Mitglied
Hallo zusammen,

m ich glaube ich habe bei meinen Letzten Kommentar zufiel gedacht und zuwenig geschrieben.

1. Meine Lösung
Java:
jbX.doClick();
funktioniert zwar aber ich könne mir denken das es noch ein par andere Möglichkeiten das zu machen.
Deswegen bitte ich um weitere Wege wie man so was machen kann.

2.
Schönheit liegt im Auge des Betrachters.
Das hört sich an als ob es da noch andere Wege gibt. Die Andere bevorzugen, die würde ich gerne auch mal sehen.
Vielleicht haben sie ja Vorzüge die ich noch nicht kenne. Also bitte zeigt mal eure Favoriten.

Es währe nicht schlecht wen Ihr mein kleines Progrämmchen als Vorlage benutzen würden damit es einfacher ist die Unterschiede zu sehen um die vor und nachteile besser zu erkenne.

Also los ich bin gespannt wie viel Lösungen wir finden.

Gruß LYJLQ
 

KrokoDiehl

Top Contributor
Hoffentlich reden wir hier nicht aneinander vorbei, ich habe zumindest den Eindruck, dass es sich etwas im Kreise dreht.
Wie man bei einem JFrame den X-Klick abfängt weißt du ja. Im Grunde geht es nun darum, alle Aktionen, die in der gleichen Bearbeitung landen gleich zu behandeln?

Ich denke dein konkretes Problem ist, dass du die Methode
Code:
setBeendenListener(ActionListener)
hast, aber das JFrame nunmal keinen ActionListener will? Sicher gibt es auch hier verschiedene Wege, z.B. einen "Wrapper" um den ActionListener:
Java:
setBeendenListener(final ActionListener listener) {
    ...
    this.addWindowListener(new WindowAdapter() {
        public void windowClosing(...) {
            listener.actionPerformed( ... );
        }
    });
}
Ob das "sauber" ist hängt wohl tatsächlich im Auge des Betrachtes. Ich finde es zumindest etwas besser als beim explizit nochmal den Beenden-Button zu klicken.

Der Tatsache geschuldet, dass ein und diesselbe Aktion durch unterschiedliche Listener propagiert wird, kannst du auch mehr über anonyme Klassen arbeiten und den Controller übergeben:
Java:
setBeendenListener(final MVCController ctrl) {
    btnBeenden.addActionListener(new ActionListener() {
        public void actionPerformed(...) {
            ctrl.beenden();
        }
    });

    addWindowListener(new WindowAdapter() {
        public void windowClosing(...) {
            ctrl.beenden();
        }
    });

    ...
Das ist aktuell mein Favorit.

Man kann auch - wenn der View den Controller absolut nicht kennen soll, über Runnable gehen...
Java:
// ok, "setBeendenListener" ist dann auch ein schlechter Name ;)

setBeendenListener(final Runnable onClose) {
    btnBeenden.addActionListener(new ActionListener() {
        public void actionPerformed(...) {
            onClose.run()
        }
    });

    addWindowListener(new WindowAdapter() {
        public void windowClosing(...) {
            onClose.run()
        }
    });
    ...
}

// Controller:
myView.setBeendenListener(new Runnable() {
    public void run() {
        MVCController.this.beenden();
    }
});
Meiner Meinung nach schon etwas zu gekünstelt.
 

lyjlq

Mitglied
Hallo KrokoDiehl,

danke für deine Antwort.

Deine Antwort „Bsp mit Wrapper“ ist eine Lösung die ich erwartet hatte :) als ich mein Frage eingestellt hat. Damit kann man eine gute Trennung von dem bereich des Layouts und des Abfangens der User Aktionen machen. Somit hat man nicht so Schnell eine Mischung davon.

Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MVC_View extends JFrame  implements MVC_Interface
{
    private static final long serialVersionUID = -3972168349874863177L;
	private JMenu jmDatei = new JMenu("Datei");
	private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	private JMenuItem jmiBeenden = new JMenuItem("Beenden");
//	private JButton jbX = new JButton("X");
	private JButton jbOeffnen = new JButton("Öffnen");
	private JButton jbSpeichern = new JButton("Speichern");
	private JButton jbBeenden = new JButton("Beenden");
	private JPanel logPanel = new JPanel();
	private JTextArea logText = new JTextArea();
	
	public MVC_View()  {
        super("MVC");
        init();
	}
	
	private void init() {
		this.setBounds(200, 200, 400, 200);
		this.setJMenuBar(mainMenue());
		this.add(mainPanel());
		this.setDefaultCloseOperation(MVC_View.DO_NOTHING_ON_CLOSE);
//		this.addWindowListener(new WindowAdapter() {
//            public void windowClosing(WindowEvent e) {
//            	Xlistener.actionPeformed();
//            }
//        });

		this.setVisible(true);
	}
	private JPanel mainPanel() {
		JPanel mainWindowPanel = new JPanel();
		mainWindowPanel.setLayout(new BorderLayout());
		mainWindowPanel.add(BorderLayout.NORTH, mainSuedPanel());
		mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
		return mainWindowPanel;
	}
	private JPanel mainSuedPanel() {
		JPanel mainSuedWindowPanal = new JPanel();
		mainSuedWindowPanal.add(jbOeffnen);
		mainSuedWindowPanal.add(jbSpeichern);
		mainSuedWindowPanal.add(jbBeenden);
		return mainSuedWindowPanal;
	}
//	 JScrollPane erzeugen
	private JScrollPane mainLogPanel() {
		JScrollPane scroll = new JScrollPane(logPanel);
		scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
		scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
		logText.setTabSize(80);
		logText.setWrapStyleWord(true);
		logText.setText("Das ist ein Teset"+"\n");
		logPanel.add(logText);
		return scroll;
	}
	
	private JMenuBar mainMenue() {
		JMenuBar mainWindowsMenue = new JMenuBar();
		jmDatei.setMnemonic('D');
		mainWindowsMenue.add(createMenuDatei());
		return mainWindowsMenue;
	 }
	 	
	 private JMenu createMenuDatei()	   {
		 jmDatei.add(jmiOeffnen);
		 jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
		 jmDatei.add(jmiSpeichern);
		 jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
		 jmDatei.addSeparator();
		 jmDatei.add(jmiBeenden);
		 jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
		 return jmDatei;
	}
	   
	public void updateLog(String log) {
		logText.setText(log);
		logPanel.add(logText);
		System.out.println(log);
	}
//	************************************************ Was ist Geklickt ***********************************

	public void setBeendenListener(final ActionListener I) {
        this.jmiBeenden.addActionListener(I);
//        this.jbX.addActionListener(I);
        this.jbBeenden.addActionListener(I);
		this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
            	 I.actionPerformed(null);
            }
        });
     }
	public void setOeffnenListener(ActionListener I) {
        this.jmiOeffnen.addActionListener(I);
        this.jbOeffnen.addActionListener(I);
     }
     public void setSpeichernListener(ActionListener I) {
        this.jmiSpeichern.addActionListener(I);
        this.jbSpeichern.addActionListener(I);
     }
}

Beim „Bsp mit Contoller„ habe ich Probleme der MVC_View müsste so aus sehen:

Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MVC_View extends JFrame  
//implements MVC_Interface
{
    private static final long serialVersionUID = -3972168349874863177L;
	private JMenu jmDatei = new JMenu("Datei");
	private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	private JMenuItem jmiBeenden = new JMenuItem("Beenden");
//	private JButton jbX = new JButton("X");
	private JButton jbOeffnen = new JButton("Öffnen");
	private JButton jbSpeichern = new JButton("Speichern");
	private JButton jbBeenden = new JButton("Beenden");
	private JPanel logPanel = new JPanel();
	private JTextArea logText = new JTextArea();
	
	public MVC_View()  {
        super("MVC");
        init();
	}
	
	private void init() {
		this.setBounds(200, 200, 400, 200);
		this.setJMenuBar(mainMenue());
		this.add(mainPanel());
		this.setDefaultCloseOperation(MVC_View.DO_NOTHING_ON_CLOSE);
//		this.addWindowListener(new WindowAdapter() {
//            public void windowClosing(WindowEvent e) {
//            	Xlistener.actionPeformed();
//            }
//        });

		this.setVisible(true);
		
	}
	private JPanel mainPanel() {
		JPanel mainWindowPanel = new JPanel();
		mainWindowPanel.setLayout(new BorderLayout());
		mainWindowPanel.add(BorderLayout.NORTH, mainSuedPanel());
		mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
		return mainWindowPanel;
	}
	private JPanel mainSuedPanel() {
		JPanel mainSuedWindowPanal = new JPanel();
		mainSuedWindowPanal.add(jbOeffnen);
		mainSuedWindowPanal.add(jbSpeichern);
		mainSuedWindowPanal.add(jbBeenden);
		return mainSuedWindowPanal;
	}
//	 JScrollPane erzeugen
	private JScrollPane mainLogPanel() {
		JScrollPane scroll = new JScrollPane(logPanel);
		scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
		scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
		logText.setTabSize(80);
		logText.setWrapStyleWord(true);
		logText.setText("Das ist ein Teset"+"\n");
		logPanel.add(logText);
		return scroll;
	}
	
	private JMenuBar mainMenue() {
		JMenuBar mainWindowsMenue = new JMenuBar();
		jmDatei.setMnemonic('D');
		mainWindowsMenue.add(createMenuDatei());
		return mainWindowsMenue;
	 }
	 	
	 private JMenu createMenuDatei()	   {
		 jmDatei.add(jmiOeffnen);
		 jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
		 jmDatei.add(jmiSpeichern);
		 jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
		 jmDatei.addSeparator();
		 jmDatei.add(jmiBeenden);
		 jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
		 return jmDatei;
	}
	   
	public void updateLog(String log) {
		logText.setText(log);
		logPanel.add(logText);
		System.out.println(log);
	}
//	************************************************ Was ist Geklickt ***********************************

	public void setBeendenListener(final MVC_Controller ctrl) {
        this.jmiBeenden.addActionListener(new ActionListener ()	{ 
        	public void actionPerformed(ActionEvent e) {
        		ctrl.Beenden();
        	}
        });
        this.jbBeenden.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e) {
				ctrl.Beenden();
			}
		});
		this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
            	System.out.println("X ende");
            	 ctrl.Beenden();
            }
        });
	}
public void setOeffnenListener(final MVC_Controller ctrl) {
	System.out.println("setOeffnen");
		this.jmiOeffnen.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Oeffnen();
			}
		});
		this.jbOeffnen.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Oeffnen();
			}
		});
	}
public void setSpeichernListener(final MVC_Controller ctrl) {
		this.jmiSpeichern.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Speichern();
			}
		});
		this.jbSpeichern.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Speichern();
			}
		});
     }

//	public void setBeendenListener( ActionListener I) {
//        this.jmiBeenden.addActionListener(I);
//        this.jbX.addActionListener(I);
//        this.jbBeenden.addActionListener(I);
//     }
//	public void setOeffnenListener(ActionListener I) {
//        this.jmiOeffnen.addActionListener(I);
//        this.jbOeffnen.addActionListener(I);
//     }
//     public void setSpeichernListener(ActionListener I) {
//        this.jmiSpeichern.addActionListener(I);
//        this.jbSpeichern.addActionListener(I);
//     }
}

Aber wie soll der MVC_Controller sein?


Mit dem „Bsp mit Runnable“ habe ich mich noch nicht beschäftigt kommt noch.
 
Zuletzt bearbeitet:

lyjlq

Mitglied
Hallo KrokoDiehl,

danke für deine Antwort.

Deine Antwort „Bsp mit Wrapper“ ist eine Lösung die ich erwartet hatte :) als ich mein Frage eingestellt hat. Damit kann man eine gute Trennung von dem bereich des Layouts und des Abfangens der User Aktionen machen. Somit hat man nicht so Schnell eine Mischung davon.

Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MVC_View extends JFrame  implements MVC_Interface
{
    private static final long serialVersionUID = -3972168349874863177L;
	private JMenu jmDatei = new JMenu("Datei");
	private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	private JMenuItem jmiBeenden = new JMenuItem("Beenden");
//	private JButton jbX = new JButton("X");
	private JButton jbOeffnen = new JButton("Öffnen");
	private JButton jbSpeichern = new JButton("Speichern");
	private JButton jbBeenden = new JButton("Beenden");
	private JPanel logPanel = new JPanel();
	private JTextArea logText = new JTextArea();
	
	public MVC_View()  {
        super("MVC");
        init();
	}
	
	private void init() {
		this.setBounds(200, 200, 400, 200);
		this.setJMenuBar(mainMenue());
		this.add(mainPanel());
		this.setDefaultCloseOperation(MVC_View.DO_NOTHING_ON_CLOSE);
//		this.addWindowListener(new WindowAdapter() {
//            public void windowClosing(WindowEvent e) {
//            	Xlistener.actionPeformed();
//            }
//        });

		this.setVisible(true);
	}
	private JPanel mainPanel() {
		JPanel mainWindowPanel = new JPanel();
		mainWindowPanel.setLayout(new BorderLayout());
		mainWindowPanel.add(BorderLayout.NORTH, mainSuedPanel());
		mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
		return mainWindowPanel;
	}
	private JPanel mainSuedPanel() {
		JPanel mainSuedWindowPanal = new JPanel();
		mainSuedWindowPanal.add(jbOeffnen);
		mainSuedWindowPanal.add(jbSpeichern);
		mainSuedWindowPanal.add(jbBeenden);
		return mainSuedWindowPanal;
	}
//	 JScrollPane erzeugen
	private JScrollPane mainLogPanel() {
		JScrollPane scroll = new JScrollPane(logPanel);
		scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
		scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
		logText.setTabSize(80);
		logText.setWrapStyleWord(true);
		logText.setText("Das ist ein Teset"+"\n");
		logPanel.add(logText);
		return scroll;
	}
	
	private JMenuBar mainMenue() {
		JMenuBar mainWindowsMenue = new JMenuBar();
		jmDatei.setMnemonic('D');
		mainWindowsMenue.add(createMenuDatei());
		return mainWindowsMenue;
	 }
	 	
	 private JMenu createMenuDatei()	   {
		 jmDatei.add(jmiOeffnen);
		 jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
		 jmDatei.add(jmiSpeichern);
		 jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
		 jmDatei.addSeparator();
		 jmDatei.add(jmiBeenden);
		 jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
		 return jmDatei;
	}
	   
	public void updateLog(String log) {
		logText.setText(log);
		logPanel.add(logText);
		System.out.println(log);
	}
//	************************************************ Was ist Geklickt ***********************************

	public void setBeendenListener(final ActionListener I) {
        this.jmiBeenden.addActionListener(I);
//        this.jbX.addActionListener(I);
        this.jbBeenden.addActionListener(I);
		this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
            	 I.actionPerformed(null);
            }
        });
     }
	public void setOeffnenListener(ActionListener I) {
        this.jmiOeffnen.addActionListener(I);
        this.jbOeffnen.addActionListener(I);
     }
     public void setSpeichernListener(ActionListener I) {
        this.jmiSpeichern.addActionListener(I);
        this.jbSpeichern.addActionListener(I);
     }
}

Beim „Bsp mit Contoller„ habe ich Probleme der MVC_View müsste so aus sehen:

Java:
import java.awt.BorderLayout;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MVC_View extends JFrame  
//implements MVC_Interface
{
    private static final long serialVersionUID = -3972168349874863177L;
	private JMenu jmDatei = new JMenu("Datei");
	private JMenuItem jmiOeffnen = new JMenuItem("Öffnen");
	private JMenuItem jmiSpeichern = new JMenuItem("Speichern");
	private JMenuItem jmiBeenden = new JMenuItem("Beenden");
//	private JButton jbX = new JButton("X");
	private JButton jbOeffnen = new JButton("Öffnen");
	private JButton jbSpeichern = new JButton("Speichern");
	private JButton jbBeenden = new JButton("Beenden");
	private JPanel logPanel = new JPanel();
	private JTextArea logText = new JTextArea();
	
	public MVC_View()  {
        super("MVC");
        init();
	}
	
	private void init() {
		this.setBounds(200, 200, 400, 200);
		this.setJMenuBar(mainMenue());
		this.add(mainPanel());
		this.setDefaultCloseOperation(MVC_View.DO_NOTHING_ON_CLOSE);
//		this.addWindowListener(new WindowAdapter() {
//            public void windowClosing(WindowEvent e) {
//            	Xlistener.actionPeformed();
//            }
//        });

		this.setVisible(true);
		
	}
	private JPanel mainPanel() {
		JPanel mainWindowPanel = new JPanel();
		mainWindowPanel.setLayout(new BorderLayout());
		mainWindowPanel.add(BorderLayout.NORTH, mainSuedPanel());
		mainWindowPanel.add(BorderLayout.CENTER,mainLogPanel());
		return mainWindowPanel;
	}
	private JPanel mainSuedPanel() {
		JPanel mainSuedWindowPanal = new JPanel();
		mainSuedWindowPanal.add(jbOeffnen);
		mainSuedWindowPanal.add(jbSpeichern);
		mainSuedWindowPanal.add(jbBeenden);
		return mainSuedWindowPanal;
	}
//	 JScrollPane erzeugen
	private JScrollPane mainLogPanel() {
		JScrollPane scroll = new JScrollPane(logPanel);
		scroll.setCorner( JScrollPane.UPPER_RIGHT_CORNER, new JLabel("1", JLabel.CENTER));
		scroll.setCorner( JScrollPane.LOWER_RIGHT_CORNER, new JLabel("2", JLabel.CENTER));
		logText.setTabSize(80);
		logText.setWrapStyleWord(true);
		logText.setText("Das ist ein Teset"+"\n");
		logPanel.add(logText);
		return scroll;
	}
	
	private JMenuBar mainMenue() {
		JMenuBar mainWindowsMenue = new JMenuBar();
		jmDatei.setMnemonic('D');
		mainWindowsMenue.add(createMenuDatei());
		return mainWindowsMenue;
	 }
	 	
	 private JMenu createMenuDatei()	   {
		 jmDatei.add(jmiOeffnen);
		 jmiOeffnen.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
		 jmDatei.add(jmiSpeichern);
		 jmiSpeichern.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
		 jmDatei.addSeparator();
		 jmDatei.add(jmiBeenden);
		 jmiBeenden.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));
		 return jmDatei;
	}
	   
	public void updateLog(String log) {
		logText.setText(log);
		logPanel.add(logText);
		System.out.println(log);
	}
//	************************************************ Was ist Geklickt ***********************************

	public void setBeendenListener(final MVC_Controller ctrl) {
        this.jmiBeenden.addActionListener(new ActionListener ()	{ 
        	public void actionPerformed(ActionEvent e) {
        		ctrl.Beenden();
        	}
        });
        this.jbBeenden.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e) {
				ctrl.Beenden();
			}
		});
		this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
            	System.out.println("X ende");
            	 ctrl.Beenden();
            }
        });
	}
public void setOeffnenListener(final MVC_Controller ctrl) {
	System.out.println("setOeffnen");
		this.jmiOeffnen.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Oeffnen();
			}
		});
		this.jbOeffnen.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Oeffnen();
			}
		});
	}
public void setSpeichernListener(final MVC_Controller ctrl) {
		this.jmiSpeichern.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Speichern();
			}
		});
		this.jbSpeichern.addActionListener(new ActionListener()
		{
        	public void actionPerformed(ActionEvent e)
			{ctrl.Speichern();
			}
		});
     }

//	public void setBeendenListener( ActionListener I) {
//        this.jmiBeenden.addActionListener(I);
//        this.jbX.addActionListener(I);
//        this.jbBeenden.addActionListener(I);
//     }
//	public void setOeffnenListener(ActionListener I) {
//        this.jmiOeffnen.addActionListener(I);
//        this.jbOeffnen.addActionListener(I);
//     }
//     public void setSpeichernListener(ActionListener I) {
//        this.jmiSpeichern.addActionListener(I);
//        this.jbSpeichern.addActionListener(I);
//     }
}

Aber wie soll der MVC_Controller sein? ???:L


Mit dem „Bsp mit Runnable“ habe ich mich noch nicht beschäftigt kommt noch.

UPS was ist den hier passiet das wolte ich nicht. :shock: Bitte einen eintrag löschen. :eek:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
F Java Programm schließen Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
J Seite öffnen und schließen Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
K Methoden Schließen eines Fensters Java Basics - Anfänger-Themen 8
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
D JDialog schließen Java Basics - Anfänger-Themen 11
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
1 Programm schließen und Neustarten Java Basics - Anfänger-Themen 5
S Konsole schließen, nachdem Jar läuft Java Basics - Anfänger-Themen 5
T JFrame per Taste schließen Java Basics - Anfänger-Themen 15
M Erste Schritte Probleme mit Fenster Schließen Java Basics - Anfänger-Themen 6
S Fenster richtig schließen Java Basics - Anfänger-Themen 8
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
S nur neu geöffnetes Fenster schließen Java Basics - Anfänger-Themen 3
D Beim schließen --> Speichern?? Java Basics - Anfänger-Themen 11
T Windows Fenster Schließen Java Basics - Anfänger-Themen 4
F Textfenster lässt sich nicht schließen Java Basics - Anfänger-Themen 3
0 FireFox aus Java Applikation schließen Java Basics - Anfänger-Themen 10
J Fenster schließen? Java Basics - Anfänger-Themen 4
M Befehl zum Fenster schließen? GUI Java Basics - Anfänger-Themen 3
S Programm gestartet - nun schließen? Java Basics - Anfänger-Themen 5
C try finally - Streams schließen Java Basics - Anfänger-Themen 7
B Java Fenster schließen Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
F festlegen, was beim schließen des fensters passiert Java Basics - Anfänger-Themen 12
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
T Per Button Klick Fenster schließen?< Java Basics - Anfänger-Themen 7
T Problem mit Fenster schließen Java Basics - Anfänger-Themen 8
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
R Endlosschleife verhindert das Schließen des Fensters Java Basics - Anfänger-Themen 10
M (Sub-)Anwendung schließen aus JMenu Java Basics - Anfänger-Themen 6
R Neue GUI öffnen und die Alte schließen Java Basics - Anfänger-Themen 6
K Schließen eines Frames Java Basics - Anfänger-Themen 4
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
B Bei Schließen von Fenster über x Aktion ausführen Java Basics - Anfänger-Themen 6
A Classe um Fenster(classe) zu schließen? Java Basics - Anfänger-Themen 4
S Anderes Fenster schließen Java Basics - Anfänger-Themen 8
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
S Frames schließen Java Basics - Anfänger-Themen 14
G JFrame bei Klick auf X WIndow nicht schließen Java Basics - Anfänger-Themen 2
A Befehl ausführen beim Schließen der Konsole Java Basics - Anfänger-Themen 3
D Beim Schließen eines Dialogs die Ganze Anwendung schließen ? Java Basics - Anfänger-Themen 7
G Pop Up Fenster schließen Java Basics - Anfänger-Themen 2
J Ein Fenster korrekt schließen? Java Basics - Anfänger-Themen 4
N Programm automatisch schließen Java Basics - Anfänger-Themen 3
G streams schließen Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5
G Frank A. - ports einfach öffnen und schließen Java Basics - Anfänger-Themen 3
M Serialisieren beim Schließen des Progs sicher beenden Java Basics - Anfänger-Themen 4
G JSP-Seite automatisch schließen Java Basics - Anfänger-Themen 4
D exceldatei schließen mit java Java Basics - Anfänger-Themen 5
M Frame Schließen Java Basics - Anfänger-Themen 5
N alten Thread vor erneutem Aufruf schließen Java Basics - Anfänger-Themen 9
N Wenn minimiert gedrückt schließen Java Basics - Anfänger-Themen 11
A Fenster schließen soll Button kontakt auslösen. Java Basics - Anfänger-Themen 12
G Fenster lässt sich nicht schließen. Java Basics - Anfänger-Themen 4
P 2. Jframe öffnen und 1. Jframe muss sich dann schließen ? Java Basics - Anfänger-Themen 4
D Meine SetMethode geht nicht || Fenster schließen Java Basics - Anfänger-Themen 3
M Methods ausführen NACH Schließen eines JFrames Java Basics - Anfänger-Themen 9
U Schließen Java Basics - Anfänger-Themen 4
G frame schließen Java Basics - Anfänger-Themen 2
E Fenster schließen Java Basics - Anfänger-Themen 10
G Zweiten Frame schließen Java Basics - Anfänger-Themen 3
N ein Java-popUp mit einem Button schließen Java Basics - Anfänger-Themen 3
G Fenster schließen bei Klick auf Button Java Basics - Anfänger-Themen 4
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
L Ein JFrame schließen ohne System.exit(). Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
G InputStream im finally-Block schließen Java Basics - Anfänger-Themen 7
G Rückgabe einer Methoden bei Schließen des Fensters Java Basics - Anfänger-Themen 3
G Java Fenster schließen Java Basics - Anfänger-Themen 5
G ActionListener - Aktionen vor/beim Schließen? Java Basics - Anfänger-Themen 9
S Schließen-Button bei awt.Frame Funktion zuweisen Java Basics - Anfänger-Themen 6
B Streams wollen scheinbar nicht schließen Java Basics - Anfänger-Themen 6
W JFrame kontrolliert schließen Java Basics - Anfänger-Themen 7
G Option vor Schließen eines JFrame Java Basics - Anfänger-Themen 9
D Methode vor Schließen eines JFrames ausführen Java Basics - Anfänger-Themen 5
D Schließen einer Datenverbindung mit schließen der Programms Java Basics - Anfänger-Themen 3
S fenster nach button schließen Java Basics - Anfänger-Themen 2
I Frame schließen, wenn anderes geöffnet wird Java Basics - Anfänger-Themen 2
bernd CD-Laufwerk öffnen bzw. schließen Java Basics - Anfänger-Themen 44
N Konsole nach Beendigung schließen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben