MVC Hilfe

Status
Nicht offen für weitere Antworten.

wako

Mitglied
hallo Javajaner,

ich hab mal ne frage zu MVC. Hab zwar schon einiges gelesen (auch hier im forum) über Model-View-Controlls aber noch nie das richtige beispiel dafür gefunden. mein problem is einfach die umsetztung. ich frage mich immer wo was wie rein gehört.
Beispiel:

hab einfach ne gui mit 2 button und nem textarea (swing natürlich)....pk, für so ein kleines beispiel is glaub mvc übertrieben aber wie müsste zum beispiel eine view klasse (hier glaub nur die elemente anordnen?), eine model klasse (werden die elemente hier bei den listenern regestriert???) und ein controller klasse aussehen....und wer weis über wehn bescheid??? hab echt keinen plan. vielleicht könnte mir ja jemand helfen. ach ja, kann es auch mehrere models und controller geben? wenn ja für was am besten immer einzelne komponenten machen???

thx leutz

wako
 

wako

Mitglied
habs mal so gemacht. bitte sagt mir ob ich es richtig verstanden hab :)

Meine View. Machts nix anderes als z.b. buttons anordnen und halt die GUI aufbaun
und sie hat zu jedem GUI-Element eine set und get Methode
Code:
public class PanelSystemPropertiesView extends JPanel{
...
public PanelSystemPropertiesView() {
		new PanelSystemPropertiesModel(this);
		this.initGUI();
	}
}

Mein Model kennt die View und registriert sich und die view beim controller
Code:
public class PanelSystemPropertiesModel{
	
	private PanelSystemPropertiesView panelView = null;
	private JFileChooser jfcLogging				= new JFileChooser();
	
	public PanelSystemPropertiesModel(PanelSystemPropertiesView panelView) {
		new PanelSystemPropertiesController(this,panelView);
		this.panelView = panelView;
		
		this.initFileChoser();
	}

	private void initFileChoser() {
		this.jfcLogging.setDialogTitle("Kunden-Verzeichnis wählen");
        this.jfcLogging.setDialogType(JFileChooser.OPEN_DIALOG);
        this.jfcLogging.setMultiSelectionEnabled(false);
        this.jfcLogging.setFileSelectionMode(JFileChooser.FILES_ONLY);
	}
	
	public void showFileChoser(JButton button) {
	    int action = this.jfcLogging.showOpenDialog(this.panelView); 
            if(action == JFileChooser.APPROVE_OPTION ) {
        	String strPath = this.jfcLogging.getSelectedFile().getAbsolutePath();
        	
        	if(button.equals(this.panelView.getJbutAIXVMPack())) {
        		this.panelView.getJtxtfAIXVMPack().setText(strPath);
        	} else if (button.equals(this.panelView.getJbutHPUXVMPack())) {
        		this.panelView.getJtxtfHPUXVMPack().setText(strPath);
        	} else if (button.equals(this.panelView.getJbutLINUXVMPack())) {
        		this.panelView.getJtxtfLINUXVMPack().setText(strPath);
        	} else if (button.equals(this.panelView.getJbutSINIXVMPack())) {
        		this.panelView.getJtxtfSINIXVMPack().setText(strPath);
        	} else if (button.equals(this.panelView.getJbutSOLARISVMPack())) {
        		this.panelView.getJtxtfSOLARISVMPack().setText(strPath);
        	} else if (button.equals(this.panelView.getJbutWINVMPack())) {
        		this.panelView.getJtxtfWINVMPack().setText(strPath);
        	}
        }
    }
}

Mein controller registriert die gui -elemente bei einem listener und ruft bei auftredenten
ereignissen methode(n) beim Model auf --> Model updated gui
Code:
public class PanelSystemPropertiesController{
	private PanelSystemPropertiesModel panelModel 	= null;
	private PanelSystemPropertiesView  panelView	= null;
	
	private JButton jbutAIXVMPack			= null;
	private JButton jbutHPUXVMPack			= null;
	private JButton jbutLINUXVMPack			= null;
	private JButton jbutSOLARISVMPack		= null;
	private JButton jbutSINIXVMPack			= null;
	private JButton jbutWINVMPack			= null;
	
	private Object src	= null;
	
	public PanelSystemPropertiesController(PanelSystemPropertiesModel panelModel, PanelSystemPropertiesView panelView) {
		this.panelModel = panelModel;
		this.panelView	= panelView;
		
		this.jbutAIXVMPack = 	 this.panelView.getJbutAIXVMPack();
		this.jbutHPUXVMPack =  	 this.panelView.getJbutHPUXVMPack();
		this.jbutLINUXVMPack = 	 this.panelView.getJbutLINUXVMPack();
		this.jbutSINIXVMPack = 	 this.panelView.getJbutSINIXVMPack();
		this.jbutSOLARISVMPack = this.panelView.getJbutSOLARISVMPack();
		this.jbutWINVMPack =	 this.panelView.getJbutWINVMPack();
		
		this.addToActionListener();
	}
	
	private void addToActionListener() {
		this.jbutAIXVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutAIXVMPack); } } );
		
		this.jbutHPUXVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutHPUXVMPack); } } );
		
		this.jbutLINUXVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutLINUXVMPack); } } );
		
		this.jbutSINIXVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutSINIXVMPack); } } );
		
		this.jbutSOLARISVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutSOLARISVMPack); } } );
		
		this.jbutWINVMPack.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						panelModel.showFileChoser(jbutWINVMPack); } } );
		
	}
}


und?? is das richtig so :) ( bestimmt nich....) Wenn ja, dann isses schon ziehmlich aufwendig...und macht bestimmt bei größeren ANwendungen die GUI langsam oder?
 
B

bygones

Gast
also - die Ebenen im MVC Konzept können natürlich mehrere Klassen sein - es handelt sich um Zuordnungen von Klassen.
Die Model Klassen sollten reine Datenklassen sein, d.h. sie haben keinerlei GUI Elemente... Die View - da hast du recht - ist dafür da, ihre Elemente anzuordnen und die Daten der Model Ebenen zu visualisieren. Aktionen werden dann an die Controller Ebene weitergegeben, die darauf reagiert (delegation an die zugehörige Model Klasse und update der GUI).

D.h. deine Model Klasse ist falsch, da sie scheinbar nur ein JFileChooser ist (das gehört zur View Ebenen). Die ActionListener können ebenso im View registriert werden, deren Aktionen sollten dann aber im Controller ablaufen...

Im groben gesprochen: Model kennt nichts. Controller kennt Model und View, View kennt Controller !
 
G

Guest

Gast
...oder auch so, dass View den Controller NICHT kennt. Controller aber View implementiert/erweitert.

Code:
class Model implements Cloneable, Serializable {
  ...nur Daten
}

class View extends JPanel {
  ... nur GUI-Komponenten ohne jegliche Funktionalität
}

class Controller extends View 
{
  ... Listener etc.
  ...
  void modelToView(Model model);
  void Model viewToModel();
}
 

Griffin

Bekanntes Mitglied
Hey, mal wieder ein Thread der mir die Erleuchtung gebracht hat! Ich hab vorher von MVC gehört und gelesen, aber nie ganz verstanden.
Ich setzt das mal sofort in meinem aktuellen "kleinem" Projekt um.

Special Thanks Goes To:
deathbyaclown for explaining more or less difficult things simple enough to understand it. :D
 

wako

Mitglied
danke euch alle...ihr seit super.

der link von DesertFox is das was ich schon immer gesucht hab :)

jetzt hab ich das prinzip entlich verstanden :)

thx, cu wako
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
S Hilfe bei der Cosinusapproximation Allgemeine Java-Themen 10
K Arraylist Hilfe Allgemeine Java-Themen 13
K Hilfe Felder Allgemeine Java-Themen 7
T Hilfe im Lizenz-Dschungel Allgemeine Java-Themen 11
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
W sql Query abspeichern selber variabele hilfe...? Allgemeine Java-Themen 16
N Hilfe bei Projekt Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben