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
MainWindow
MainWindowcontroller
MainWindowProgramm
So das sollte es gewesen sein. Wenn noch was fehlt bitte melden.
Danke für die Hilfe.
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.