Hallo!
Ich versuche, das MVC-Konzept zu verstehen: Was view, model und controller vom Prinzip her sind, habe ich einigermaßen verstanden
- model: Daten
- view: GUI
- controller: vermittler zwischen GUI und Daten
Aber das Zusammenspiel ist mir noch unklar, vor allem, wer wen als Referenz übergeben bekommt. Ich habe hier mal ein kleines Beispiel programmiert:
Ist das so richtig aufgeteilt? Und stimmen die Referenzübergaben?
Ich versuche, das MVC-Konzept zu verstehen: Was view, model und controller vom Prinzip her sind, habe ich einigermaßen verstanden
- model: Daten
- view: GUI
- controller: vermittler zwischen GUI und Daten
Aber das Zusammenspiel ist mir noch unklar, vor allem, wer wen als Referenz übergeben bekommt. Ich habe hier mal ein kleines Beispiel programmiert:
Code:
import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.SwingUtilities; public class View { private Controller controllerFuerDiesenView; public View() { initGUI(); } public void initGUI() { JFrame einframe = new JFrame(); einframe.setLayout(new BorderLayout()); einframe.setSize(300,400); einframe.setLocationRelativeTo(null); einframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel einpanel = new JPanel(); einpanel.setLayout(new BorderLayout()); //Model erzeugen Model mymodel = new Model(); //View mit model verbinden JButton button = new JButton(mymodel.giveText()); JTextArea textinput = new JTextArea(); // View mit Controller verbinden controllerFuerDiesenView = new Controller(mymodel); textinput.addKeyListener(controllerFuerDiesenView); button.addActionListener(controllerFuerDiesenView); einpanel.add(button, BorderLayout.NORTH); einpanel.add(textinput, BorderLayout.SOUTH); einframe.add(einpanel, BorderLayout.CENTER); einframe.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { View myview = new View(); } }); } }
Code:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JTextArea; public class Controller implements ActionListener, KeyListener { private Model model; public Controller (final Model param) { this.model = param; } @Override public void actionPerformed(ActionEvent event) { System.out.println("Button gedrückt"); } @Override public void keyPressed(KeyEvent event) { } @Override public void keyReleased(KeyEvent event) { } @Override public void keyTyped(KeyEvent event) { } }
Code:
public class Model { private String dertext = "Hallo"; public String giveText() { return dertext; } public void setText(final String param) { dertext = param; } }
Comment