Swing MVC / View - Controller

G

Gurvan

Gast
Hallo,

habe bereits viel über das MVC-Pattern gelesen, jedoch ist mir einiges noch nicht ganz klar geworden.

Eine Frage bezüglich der Beziehung zwischen View und Controller, bsp.:
Java:
public class View extends JFrame implements ActionListener {

	private Controller controller;
	private Model model;

	private JMenuBar menuBar;
	private JMenu menu;
	private JMenuItem menuItem;

	public View(Controller controller, Model model) {
		super("MVC-Example");
		this.controller = controller;
		this.model = model;

		this.initView();
		this.pack();
		this.setVisible(true);
	}

	private void initView() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		this.menuBar = new JMenuBar();
		this.menu = new JMenu("menu");
		this.menuItem = new JMenuItem("fillField");
		this.menuItem.addActionListener(this);

		this.setJMenuBar(menuBar);
		this.menuBar.add(menu);
		this.menu.add(menuItem);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getSource() == menuItem) {
			controller.menuClicked();
		}
	}
}
Nichts besonderes - eine MenuBar mit einem Menü. Sofern auf den Menüeintrag geklickt wird, wird die Methode [c]menuClicked()[/c] aufgerufen. Der Controller entscheidet dann was zu tun ist (zb: model benachrichtigen, dieser benachrichtigt die view über neuen inhalt eines textfeld).
Wie sieht das ganze nun aus wenn durch klicken des Menüeintrag ein Dialog mit zwei Textfeldern geöffnet wird indem Eingaben getätigt werden (bsp Telefonbuchverwaltung: Eingabe eines Namen -> Ausgabe der Telefonnummer)? Ist der Dialog dann eine eigene View und besitzt somit auch seinen eigenen Controller oder wie sollte dies Behandelt werden?

Über eine kleine Hilfe wäre ich dankbar.


Gruß
 

moonermo

Mitglied
Hallo,

eigentlich ist es streng genommen so, dass die View nur den Controller kennt und das Model nur den Controller kennt. Der Controller wiederum kann beide kennen (Prinzip der Datenkapselung: Jeder soll nur das kennen, was er auch für die Erfüllung seines Zweckes benötigt).
Du aber hast der View auch das Model gegeben, was eigentlich nicht so gedacht ist.
Es gibt aber auch weniger strenge Versionen, bei denen die View und der Controller eine gemeinsame Klasse sind und es dann eben noch das Model gibt.
Ein Dialog ist eigentlich nichts anderes als ein weiterer Bestandteil der View, dieser sollte also seine Ergebnisse auch dem Controller mitteilen, und dieser dann dementsprechend handeln und zum Beispiel dem Model Bescheid geben. Ändert sich dann etwas am Model, so gibt das Model dem Controller Bescheid und dieser wiederum bei Bedarf der View.
Ich hoffe, das hilft dir

P.s.: Nach wenigen Stunden braucht man noch nicht fragen, ob wirklich
hat.

Gruß
 
Zuletzt bearbeitet:
G

Gurvan

Gast
eigentlich ist es streng genommen so, dass die View nur den Controller kennt und das Model nur den Controller kennt.
Das Model den Controller? Der Sinn des MVC-Patterns besteht doch darin das dass Model unabhängig von der View und dem Controller agiert.

Du aber hast der View auch das Model gegeben, was eigentlich nicht so gedacht ist.
Es gibt aber auch weniger strenge Versionen, bei denen die View und der Controller eine gemeinsame Klasse sind und es dann eben noch das Model gibt.
Ja das stimmt, da habe ich heute ziemlich viel verschiedene Meinungen zu gelesen.

Danke dir für den Beitrag.
 
G

Gurvan

Gast
So ist das ganze zur Zeit bei mir auch Implementiert. Die View kennt das Model um bei einem update auf die neuen Daten zugreifen zu können, habe nun aber bemerkt das ich das Model bei [JAPI]java.util.Observer#update(java.util.Observable, java.lang.Object)[/JAPI] mit übergeben kann (eine instanz des model in der view ist somit überflüssig).
Das Problem besteht nun aber immernoch darin wie die Daten des Dialog zum Controller gelangen. In der "HauptView" wird ein Object des Dialog erzeugt, sollte ich hier einfach den Controller mit übergeben sodass der Dialog diesen kennt?
 

moonermo

Mitglied
So ist das ganze zur Zeit bei mir auch Implementiert. Die View kennt das Model um bei einem update auf die neuen Daten zugreifen zu können, habe nun aber bemerkt das ich das Model bei [JAPI]java.util.Observer#update(java.util.Observable, java.lang.Object)[/JAPI] mit übergeben kann (eine instanz des model in der view ist somit überflüssig).
Das Problem besteht nun aber immernoch darin wie die Daten des Dialog zum Controller gelangen. In der "HauptView" wird ein Object des Dialog erzeugt, sollte ich hier einfach den Controller mit übergeben sodass der Dialog diesen kennt?

Ich würde entweder die Ergebnisse des Dialogs über die View zum Controller geben, oder wie du dem Dialog den Controller mitgeben. Noch ein weg wäre dem Controller das Verwalten des Dialogs zu überlassen und die erste View sagt dem Controller nur: mach mal einen Dialog auf und behandle dessen Ergebnis.
 
G

Gurvan

Gast
Noch ein weg wäre dem Controller das Verwalten des Dialogs zu überlassen und die erste View sagt dem Controller nur: mach mal einen Dialog auf und behandle dessen Ergebnis.

Na darüber habe ich noch garnicht nachgedacht - obwohl ich das mit "JOptionPane's" ähnlich handhabe. Dann werde ich das jetzt erst einmal so umschreiben, scheint wohl bisher die beste Möglichkeit zu sein.

Danke dir! Weitere Möglichkeiten können gerne genannt werden ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
R Model View Controller Konzept AWT, Swing, JavaFX & SWT 2
M Swing Von einem Controller aus View-Elemente ändern AWT, Swing, JavaFX & SWT 11
D Design - View & Controller AWT, Swing, JavaFX & SWT 2
P Verbindung View und Controller AWT, Swing, JavaFX & SWT 3
F MVC: Update von View und Controller AWT, Swing, JavaFX & SWT 5
S MVC - Neues Frame, neue View, neuer Controller? AWT, Swing, JavaFX & SWT 3
C Model View Controller - Beispielimplementation AWT, Swing, JavaFX & SWT 5
M SWT und Model View Controller? AWT, Swing, JavaFX & SWT 8
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
M Swing MVC-Pattern - View mit mehreren Models AWT, Swing, JavaFX & SWT 5
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
4a61766120617274697374 dynamische Tree View AWT, Swing, JavaFX & SWT 2
H JavaFX Ein View vorschalten Exception AWT, Swing, JavaFX & SWT 7
M SWT View nicht mehr sichtbar AWT, Swing, JavaFX & SWT 2
G JavaFX "Framework" zur View Ersellung AWT, Swing, JavaFX & SWT 0
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
K Panels mit eigenen Controllern in Main-View einbauen AWT, Swing, JavaFX & SWT 4
T View AccessibleContext AWT, Swing, JavaFX & SWT 0
S Swing Auf Änderungen eines Models in der View einer JTable reagieren AWT, Swing, JavaFX & SWT 1
S Swing JPanel in View ersetzen AWT, Swing, JavaFX & SWT 10
O Swing JTextField Sync View -> Model AWT, Swing, JavaFX & SWT 3
L View aus dem MVC ist immer die GUI? AWT, Swing, JavaFX & SWT 5
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
Rudolf Swing Baut die View die Modelebene auf oder wer? AWT, Swing, JavaFX & SWT 13
N MVC - Logik zum Verändern der View AWT, Swing, JavaFX & SWT 8
V Eclipse View Right-Click Menu hinzufügen AWT, Swing, JavaFX & SWT 2
D Drag-Action: Innerhalb meiner View? AWT, Swing, JavaFX & SWT 3
C SWT-Elemente an View-Fenster angleichen und automatisch resizen AWT, Swing, JavaFX & SWT 3
G Swing Höhe des View eines JScrollPane fest auf Höhe des JScrollPane setzen! AWT, Swing, JavaFX & SWT 4
R Swing Designfrage - Zusammenspiel Model / View AWT, Swing, JavaFX & SWT 10
J Swing SwingActions und das Problem auf den View bzw. das Model zuzugreifen AWT, Swing, JavaFX & SWT 2
D Swing JTable Model View Problem AWT, Swing, JavaFX & SWT 6
H shell in view implementieren; menu mit keystroke unterlegen AWT, Swing, JavaFX & SWT 8
M Swing Model an View binden AWT, Swing, JavaFX & SWT 4
H Swing JScrollPane mit JPanel als View AWT, Swing, JavaFX & SWT 3
B Sudokuartiger View (RadiobuttonTableView) mit JFace Viewer? AWT, Swing, JavaFX & SWT 3
N FileChooser in View AWT, Swing, JavaFX & SWT 3
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
hdi Swing JTable & Filtern: Daten nicht in der View AWT, Swing, JavaFX & SWT 2
B SWT Textdatei Lesen und Anzeige in View - Zeichensatzproblem AWT, Swing, JavaFX & SWT 4
H Eclipse View / Window Layout AWT, Swing, JavaFX & SWT 3
N RCP/SWT View durch Programm auf 2. Bildschirm verschieben AWT, Swing, JavaFX & SWT 2
B view in andere View einbinden AWT, Swing, JavaFX & SWT 5
G RCP - SWT :: Scrollbars in einer View AWT, Swing, JavaFX & SWT 10
Zed JTable view auf Selection setzen AWT, Swing, JavaFX & SWT 2
R MVC: System.out.prinln in View umleiten geht nicht richtig AWT, Swing, JavaFX & SWT 7
K JSpinner - Model <-> View, unterschiedliche Werte AWT, Swing, JavaFX & SWT 9
E Mehrere Views in einer View AWT, Swing, JavaFX & SWT 3
TRunKX Ereignissweitergabe von Jlist.getSelected() aus der View AWT, Swing, JavaFX & SWT 7
D Scrollbalken in einem View AWT, Swing, JavaFX & SWT 2
I Shell aus einer Plugin-View öffnen . AWT, Swing, JavaFX & SWT 4
B View zeichnet Daten aus dem Model ohne Update AWT, Swing, JavaFX & SWT 4
M auch JScrollPane aber mit Zoomen, wie wird der View gesetzt AWT, Swing, JavaFX & SWT 2
MiMa Strukturierung und Organisation von umfangreiche Controller AWT, Swing, JavaFX & SWT 1
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
OSchriever Auf Stage von FXML-Controller zugreifen AWT, Swing, JavaFX & SWT 12
J JavaFX JavaFX Splitpane - Zugriff auf die Controller der Elemente AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
J Injection - Aber Controller sind null AWT, Swing, JavaFX & SWT 3
J Controller ist null - Warum AWT, Swing, JavaFX & SWT 3
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
L Javafx Controller Klasse in Maven AWT, Swing, JavaFX & SWT 7
M NullPointerException / Controller AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
R JavaFX Übergabe von Parametern an Controller AWT, Swing, JavaFX & SWT 7
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
L Wie realisiere ich einen Controller AWT, Swing, JavaFX & SWT 1
M Java FX SceneBuilder 2.0, FXML, Controller AWT, Swing, JavaFX & SWT 1
T JavaFX Controller im extra Thread AWT, Swing, JavaFX & SWT 0
I JavaFX Im Controller die ProgressBar mit Task updaten AWT, Swing, JavaFX & SWT 6
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Class saveFile AWT, Swing, JavaFX & SWT 2
X JavaFX getScene().getWindow() im JavaFX Controller AWT, Swing, JavaFX & SWT 1
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
D JavaFX Controller Klasse splitten? AWT, Swing, JavaFX & SWT 16
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben