Hallo zusammen,
im Zuge meines ersten eigenen Projektes stoße ich aktuell auf einige Fragen und ich hoffe das mir jemand von euch weiterhelfen kann.
Das Grundprinzip von MVC habe ich schon verstanden. Es geht einfach darum, die Daten/Logik von der Anzeige der Daten zu trennen, um später noch Änderungen an einem der beiden vornehmen zu können ohne das andere dabei zu manipulieren.
Um mir das ganze Thema etwas praktischer zu veranschaulichen habe ich ein kleines Programm geschrieben. Dort hat man ein Textfeld zur Eingabe einer Notiz, 2 Buttons (hinzufügen/entfernen) und eine JList, die die erstellten Notizen anzeigen soll.
Hier ist der Code für mein "Model":
Hier die beiden Methoden in meiner GUI-Klasse welche dafür sorgen, dass beim klicken auf die Buttons die Notizen angelegt bzw. gelöscht werden:
Wenn ich alles richtig verstanden habe müsste diese Implementierung doch gemäß des MVC Patterns sein oder nicht? Die Daten sind unabhängig von der View und über die ActionListener werden die Interaktionen zwischen View und Model erreicht.
Vorhin hatte ich mir zu dem Thema dann noch ein weiteres Video angeschaut und dort wird jeweils für die View, den Controller und das Model eine eigene Klasse erstellt. Jetzt frage ich mich natürlich weshalb. Geht es hier einfach nur darum, dass man die Daten (Model), die Ansicht (View) und die Interaktionen (Controller) noch stärker trennt und dadurch zu einem späteren Zeitpunkt eine bessere Übersicht hat? Hier der Link zu dem Video!
Ich würde mich wirklich sehr darüber freuen wenn mir jemand erklären könnte, weshalb es in dem Video 3 Klasse für Model, View und Controller gibt und in anderen Tutorials gibt es nur ein Model, wie in diesem Tutorial. Vielleicht ist meine Implementierung ja auch nicht korrekt oder ich verstehe etwas nicht richtig.
im Zuge meines ersten eigenen Projektes stoße ich aktuell auf einige Fragen und ich hoffe das mir jemand von euch weiterhelfen kann.
Das Grundprinzip von MVC habe ich schon verstanden. Es geht einfach darum, die Daten/Logik von der Anzeige der Daten zu trennen, um später noch Änderungen an einem der beiden vornehmen zu können ohne das andere dabei zu manipulieren.
Um mir das ganze Thema etwas praktischer zu veranschaulichen habe ich ein kleines Programm geschrieben. Dort hat man ein Textfeld zur Eingabe einer Notiz, 2 Buttons (hinzufügen/entfernen) und eine JList, die die erstellten Notizen anzeigen soll.
Hier ist der Code für mein "Model":
Java:
public class NoteListModel extends DefaultListModel {
private List<Note> noteList = new ArrayList<Note>();
public NoteListModel(){
}
public void addNote(int index, Note note){
noteList.add(index, note);
fireIntervalAdded(this, index, index);
}
public void removeNote(int index){
noteList.remove(index);
fireIntervalRemoved(this, index, index);
}
@Override
public Object getElementAt(int index) {
return noteList.get(index);
}
@Override
public int getSize() {
return noteList.size();
}
}
Hier die beiden Methoden in meiner GUI-Klasse welche dafür sorgen, dass beim klicken auf die Buttons die Notizen angelegt bzw. gelöscht werden:
Java:
private class AddNoteAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// Create instance of note with the given text
String text = fldText.getText();
Note note = new Note(text);
// Add list after selected note, if no selection add at beginning.
int index = jListNotes.getSelectedIndex();
if (index == -1) {
index = 0;
} else {
index++;
}
// Add note to model
noteListModel.addNote(index, note);
// Clear Textfield after adding Note
fldText.requestFocusInWindow();
fldText.setText("");
}
}
private class RemoveNoteAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// Check if a Note is selected
int index = jListNotes.getSelectedIndex();
if(index == -1){
System.out.println("Please select a Note to delete");
}else {
// Remove Note from model
noteListModel.removeNote(index);
}
}
}
Wenn ich alles richtig verstanden habe müsste diese Implementierung doch gemäß des MVC Patterns sein oder nicht? Die Daten sind unabhängig von der View und über die ActionListener werden die Interaktionen zwischen View und Model erreicht.
Vorhin hatte ich mir zu dem Thema dann noch ein weiteres Video angeschaut und dort wird jeweils für die View, den Controller und das Model eine eigene Klasse erstellt. Jetzt frage ich mich natürlich weshalb. Geht es hier einfach nur darum, dass man die Daten (Model), die Ansicht (View) und die Interaktionen (Controller) noch stärker trennt und dadurch zu einem späteren Zeitpunkt eine bessere Übersicht hat? Hier der Link zu dem Video!
Ich würde mich wirklich sehr darüber freuen wenn mir jemand erklären könnte, weshalb es in dem Video 3 Klasse für Model, View und Controller gibt und in anderen Tutorials gibt es nur ein Model, wie in diesem Tutorial. Vielleicht ist meine Implementierung ja auch nicht korrekt oder ich verstehe etwas nicht richtig.
Zuletzt bearbeitet: