MVC - Logik zum Verändern der View

Naryxus

Aktives Mitglied
Hallo,

ich hab mal eine Frage bezüglich des MVC. Mir ist klar, dass das alles so gut wie möglich getrennt sein sollte. Ich arbeite im Moment an einem Formular, dessen Inhalt lediglich überprüft werden soll und in einer Datei gespeichert werden soll. Soweit konnte ich das vom Konzept her auch gut unterscheiden.

Nur sind mir jetzt verschiedene Ideen zur besseren Benutzerfreundlichkeit gekommen. So sollen also verschiedene Methoden zur Veränderung der View eingebaut werden. Nur in welchen Bereich sollen diese Methoden jetzt gehören? Stecke ich sie ins Model kann man das Model nicht einfach von der View trennen, ohne dass es noch funktioniert. Aber so richtig in die View gehört es ja auch nicht.

Ein kleines Beispiel einer Methode zum besseren Verständnis wäre vielleicht:
Es gibt eine Liste. Klickt man auf ein Element dieser Liste, wird es aus dieser Liste gelöscht und in eine andere Liste eingefügt. Wo gehört dieses Verschieben jetzt hin?

Liebe Grüße, Naryxus
 

KrokoDiehl

Top Contributor
Dem View liegt ja ein Modell zugrunde und um bei deinem Beispiel zu bleiben: Der Controller übernimmt das Verschieben: Er nimmt es aus dem einen Listenmodell und steckt es in das andere. Die geänderten Listenmodelle benachrichtigen den View über Listener.
In diesem Fall hätte das Modell aus dem MVC zwei Submodelle, eben diese Listenmodelle.
 

Naryxus

Aktives Mitglied
Danke für die Antwort. Bei mir haben sich daraus jetzt noch zwei Fragen ergeben:

  1. Das würde also heißen, dass ich bei der Initialisierung die zwei Listen dem Konstruktor der View übergebe und dann bei jeder Änderung eine Methode update(List1, List2) aufrufen würde?
  2. Übergebe ich dann vom Controller aus gleich eine JList oder übergebe ich eine List<E> und konstruiere dann in der View die entsprechende JList daraus?

Grüße, Naryxus
 
V

vanny

Gast
Du erstellst 2 mal (Default)ListModel und übergibst diese an deine JLists(also díe GuiKomponenten).
Dann nimmt dein Controller das eine Element aus ListModel 1 und schiebt es in das ListModel 2.
Deine JLists werden dann per Listener über diese Veränderung informiert und zeichnen sich mit dem aktuellen Inhalt neu.
 

Naryxus

Aktives Mitglied
Okay. Sorry, aber so ganz verstehen tu ich das immer noch nicht... :bahnhof:

Ich versuche mal mein Programm etwas genauer zu beschreiben:
Ich habe ein Formular, bei dem größtenteils einzelne Textfelder ausgefüllt werden sollen. Damit nicht so viel Schreibarbeit entsteht gibt es dann verschiedene Listen von vordefinierten Werten, die ausgewählt werden können, da hier kein anderer Wert Sinn machen würde.

Für mich ist es hierbei erstmal schwierig mir zu überlegen, wie ein vernünftiges Modell hierbei aussehen sollte. Denn grundlegend ist die Aufgabe des Programmes eigentlich nur eine Übernahme der eingegeben Werte in die Textfelder in ein zusammenhängendes, eventuell formatiertes Textdokument (beispielsweise eine HTML-Seite). Zusätzlich soll ein Parser über die Werte laufen, damit keine falschen Eingaben getätigt werden können.

Aus euren Antworten heraus, habe ich für das Modell jetzt verstanden, dass dies eigentlich eine Schablone für die GUI ist (Wie am Beispiel mit den Listen, dass ich im Modell zwei Listen habe, durch die in der GUI die grafischen Listen "gezeichnet" werden; Das kann ich soweit noch nachvollziehen). Aber es macht doch keinen Sinn, jedes einzelne Textfeld durch ein Attribut des Typs String darzustellen.
Ich hätte im Modell jetzt eine Methode parse(Textfeld1, Textfeld2, Liste, ...) gemacht, die alle Werte aus der GUI überprüft und entsprechend true oder false liefert. Wenn true herauskommt, soll es gespeichert werden und wenn nicht soll ein Fehler geworfen werden.

Tut mir leid, dass ich hier etwas schwer von Begriff bin und Grüße,
Naryxus
 

GUI-Programmer

Top Contributor
Nur mal zu folgenden Teil:
Ich hätte im Modell jetzt eine Methode parse(Textfeld1, Textfeld2, Liste, ...) gemacht, die alle Werte aus der GUI überprüft und entsprechend true oder false liefert.

Wenn dann eher ohne Textfeld (JTextField bzw. TextField), da GUI Komponenten nichts im Model verloren haben. Also dann eher eine Methode
Code:
parse(String text1, String text2, Liste,...)
evtl. sogar mit Array:
Code:
parse(String..., Liste)
 

bERt0r

Top Contributor
Ich glaube was du suchst ist eine Combobox. Schau dich mal nach Combobox mit Autocomplete um, gabs hier im Forum vor kurzem einen Post dazu.
 
V

vanny

Gast
Du solltest dein Design mal überdenken.
Mach dir zunächst einmal gedanken, was du wirklich benötigst und teste diese Funktionen mal in einem seperaten kleinen Programm.
Es macht schlichtweg keinen Sinn, irgentein MVC Konstrukt mit JLists zu basteln, wenn man nicht mal vorher eine JList mit nem DefaultListModel zum laufen gebracht hat um zumind. die offensichtlichsten Funktionalitäten dieses Konstrukts zu verstehen.
Das ganze danach in dein Programm zu übernehmen ist dann nicht das Problem.
Aber im CodeGewusel nach Fehlern zu suchen ohne die grundsätzliche Funktionsweise kennengelernt zu haben ist wohl eher destruktiv.
Frei nach dem Motto, "Warum soll ich mit dem Haareföhnen warten, bis ich aus der Wanne raus bin...*britzel*"

Es sind Feiertage, nimm dir die Zeit, es lohnt sich.

Gruß Vanny
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Logik auf GUI übertragen AWT, Swing, JavaFX & SWT 2
P Swing GUI noch nicht gezeichnet - Logik läuft - blockiert AWT, Swing, JavaFX & SWT 3
E SWT und Separierung von Logik, Präsentation sowie Modell (also eine Form von MVC) AWT, Swing, JavaFX & SWT 10
O Zugriff auf PreferenceStore aus der Business-Logik-Schicht? AWT, Swing, JavaFX & SWT 11
V Wieviel Logik in paintComponent? AWT, Swing, JavaFX & SWT 7
F Zugriff auf Oberfläche bzw Trennung GUI / Logik AWT, Swing, JavaFX & SWT 3
K Trennung von GUI und Logik AWT, Swing, JavaFX & SWT 6
G Korrekte Trennung von GUI, Logik und Event nach MVC AWT, Swing, JavaFX & SWT 5
O Trennung Gui und Logik - Strukturierte Client Anwendung AWT, Swing, JavaFX & SWT 4
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
H JItem während der Programmlaufzeit verändern AWT, Swing, JavaFX & SWT 8
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
E wie Schriftfarbe in JEditorPane verändern? AWT, Swing, JavaFX & SWT 10
J SplitPane Aussehen des Divider verändern AWT, Swing, JavaFX & SWT 7
A Swing Fensterinhalt verändern AWT, Swing, JavaFX & SWT 3
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
J Textlabel verändern mit parallelen Threads AWT, Swing, JavaFX & SWT 7
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
P JFrame manuell Grösse verändern durch 'mouseDragged' AWT, Swing, JavaFX & SWT 3
M JTabbedPane verändern mit Nimbus Look and Feel AWT, Swing, JavaFX & SWT 1
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
I JTable Inhalte löschen ohne den JTable zu verändern! AWT, Swing, JavaFX & SWT 5
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
B MessageBox Position Verändern AWT, Swing, JavaFX & SWT 8
A Swing Fenstergröße mittels Menü verändern AWT, Swing, JavaFX & SWT 3
S SWT Shell durch Event in der Größe verändern AWT, Swing, JavaFX & SWT 7
S Swing Größe von JLabels verändern sich in einem Panel unterschiedlich AWT, Swing, JavaFX & SWT 6
M Swing XML Datei in JTable darstellen + verändern AWT, Swing, JavaFX & SWT 3
H JFrame in der Laufzeit verändern AWT, Swing, JavaFX & SWT 11
B Schriftgröße allgemein verändern? AWT, Swing, JavaFX & SWT 4
W JLabel-Text ab best. Zeitpunkt nicht mehr verändern AWT, Swing, JavaFX & SWT 2
L Swing Image zur Laufzeit verändern AWT, Swing, JavaFX & SWT 6
O Größe von Komponenten im JFrame manuell verändern AWT, Swing, JavaFX & SWT 2
J Swing jTable verändern AWT, Swing, JavaFX & SWT 29
S SWT Table Größen verändern AWT, Swing, JavaFX & SWT 10
C private Panel anderer Klasse verändern AWT, Swing, JavaFX & SWT 11
Dragonfire Swing Hintergrund aller Komponenten verändern AWT, Swing, JavaFX & SWT 2
H Mit for-schleife die Componenten eines Frames verändern AWT, Swing, JavaFX & SWT 5
C Spielfeld Gitter - Einzelne Zellen verändern AWT, Swing, JavaFX & SWT 18
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
M Panelinhalt im Programm verändern AWT, Swing, JavaFX & SWT 12
L SWT Button Text verändern AWT, Swing, JavaFX & SWT 16
A Swing Bei größe verändern des Fensters Grafik weg AWT, Swing, JavaFX & SWT 3
S JButton - Hintergrund verändern AWT, Swing, JavaFX & SWT 7
D JPanel nach ein paar sekunden verändern AWT, Swing, JavaFX & SWT 5
E Strichstäke bei einem Kreisbogen verändern AWT, Swing, JavaFX & SWT 3
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
G Mauszeiger verändern AWT, Swing, JavaFX & SWT 10
K Image verändern AWT, Swing, JavaFX & SWT 8
S Hintergrundfarbe in einer Spalte der JTable verändern AWT, Swing, JavaFX & SWT 3
G Styling verändern AWT, Swing, JavaFX & SWT 4
A Fenstergrösse soll sich konstant verändern AWT, Swing, JavaFX & SWT 8
G Probleme mit Content bei Null-Layout verändern AWT, Swing, JavaFX & SWT 7
Z TextField aus ActionListener von JButton verändern AWT, Swing, JavaFX & SWT 10
A Jface: Wie Inhalt des Hauptbereichs verändern AWT, Swing, JavaFX & SWT 5
G Pixel ablaufartig verändern AWT, Swing, JavaFX & SWT 5
G Text eines Labels verändern? AWT, Swing, JavaFX & SWT 4
G Spaltenbereite bei JTable verändern AWT, Swing, JavaFX & SWT 2
D Bild nicht sichtbar verändern. AWT, Swing, JavaFX & SWT 8
K InnerFrame Select-Ebene verändern AWT, Swing, JavaFX & SWT 7
& Position eines Fensters nicht verändern AWT, Swing, JavaFX & SWT 8
S Anordnung von Buttons verändern AWT, Swing, JavaFX & SWT 3
zilti Swing-Element verändern AWT, Swing, JavaFX & SWT 13
G Zeichnung verschwindet nach verändern der Fenstergröße. AWT, Swing, JavaFX & SWT 2
A Position des Fensters verändern AWT, Swing, JavaFX & SWT 21
B ToolTip verändern / selbst gestalten AWT, Swing, JavaFX & SWT 3
H JButton Farbe verändern AWT, Swing, JavaFX & SWT 4
G JTabbedPane Inhalt verändern? AWT, Swing, JavaFX & SWT 2
T JScrollbar UI verändern AWT, Swing, JavaFX & SWT 5
L Menu Position verändern? AWT, Swing, JavaFX & SWT 24
T Komponente soll die UIManager-PreferredSize verändern AWT, Swing, JavaFX & SWT 5
M Zeilenabstand einer JTextPane verändern? AWT, Swing, JavaFX & SWT 4
D [JTable] Dateninhalt verändern, sobald editiert wird AWT, Swing, JavaFX & SWT 2
J Auf Button - Druck soll Rechteck Farbe verändern AWT, Swing, JavaFX & SWT 8
K Spaltenbreite von mehreren Tabellen gleichzeitig verändern AWT, Swing, JavaFX & SWT 3
M JScrollPane auf JPanel - Resizing - Größe verändern AWT, Swing, JavaFX & SWT 10
A Problem mit InvokeAndWait - JLabel Text verändern AWT, Swing, JavaFX & SWT 2
F JTextArea aus einer anderen Klasse heraus verändern AWT, Swing, JavaFX & SWT 4
S Grafik Farbwert verändern? AWT, Swing, JavaFX & SWT 8
J JTable / Model Daten verändern AWT, Swing, JavaFX & SWT 5
L Größe von Komponenten im Nulllayout mit der Maus verändern. AWT, Swing, JavaFX & SWT 2
M Aussehen von Label verändern? AWT, Swing, JavaFX & SWT 3
M Buttons verändern AWT, Swing, JavaFX & SWT 7
R Button verändern AWT, Swing, JavaFX & SWT 2
S Columnname dynamisch verändern AWT, Swing, JavaFX & SWT 2
D GUI in JFrame mit invokeLater verändern AWT, Swing, JavaFX & SWT 5
D JPanel Koordinatensystem -> Ursprung verändern. AWT, Swing, JavaFX & SWT 2
B JTree - Reihenfolge der Nodes verändern AWT, Swing, JavaFX & SWT 3
D JSPinner Größe verändern - setSize() funktioniert nicht AWT, Swing, JavaFX & SWT 7
C GUI erstellen und verändern AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben