Hallo allerseits,
versuche gerade das MVC Entwurfsmuster zu verstehen:
C --> V--> M und C --> M
Deshalb habe ich den Vorschlag in
Tutorial: Model-View-Controller (MVC) Struktur in Java Projekten nutzen BigBastis Blog
in einem einfachen Beispiel nachprogrammiert (siehe unten).
Leider fehlt dort die Implementierung von V --> M
1)
Warum kann eigentlich V auf M direkt zugreifen, ohne den Controler zu verwenden?
Dann kann man das MVC ja gleich - ohne Verwendung von C - modellieren.
Also wie folgt:
V --> M
2)
Wie kann man das Java-Beispiel möglichst einfach ergänzen, so dass auch V --> M
implementiert wird und einen Sinn ergibt ?
mfg
Ernst
versuche gerade das MVC Entwurfsmuster zu verstehen:
C --> V--> M und C --> M
Deshalb habe ich den Vorschlag in
Tutorial: Model-View-Controller (MVC) Struktur in Java Projekten nutzen BigBastis Blog
in einem einfachen Beispiel nachprogrammiert (siehe unten).
Leider fehlt dort die Implementierung von V --> M
1)
Warum kann eigentlich V auf M direkt zugreifen, ohne den Controler zu verwenden?
Dann kann man das MVC ja gleich - ohne Verwendung von C - modellieren.
Also wie folgt:
V --> M
2)
Wie kann man das Java-Beispiel möglichst einfach ergänzen, so dass auch V --> M
implementiert wird und einen Sinn ergibt ?
mfg
Ernst
Java:
package MainTaschenrechnermvc10;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TaschenrechnerMVC10 {
public static void main(String[] args) {
TRController trController = new TRController();
trController.getTRView().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class TRModel {
private double sum;
public TRModel() {
reset();
}
public void addiere(double wert1, double wert2) {
sum = wert1 + wert2;
}
public void reset() {
sum = 0;
}
public double getSumme() {
return sum;
}
}
class TRView extends JFrame {
private Container mycont;
private JButton mybtPlus;
private JTextField mytfZahl1;
private JTextField mytfZahl2;
private JTextField mytfErg;
private JLabel dummyLabel1;
private JLabel dummyLabel2;
private JPanel myp;
private GridLayout myGL23;
public TRView() {
mycont = getContentPane();
mybtPlus = new JButton("+");
mytfZahl1 = new JTextField("hier 1. Zahl eingeben", 30);
mytfZahl2 = new JTextField("hier 2. Zahl eingeben", 30);
mytfErg = new JTextField("hier kommt das Ergebnis", 30);
dummyLabel1 = new JLabel();
dummyLabel2 = new JLabel();
myp = new JPanel();
myGL23 = new GridLayout(2, 3);
myp.setLayout(myGL23);
myp.add(mytfZahl1);
myp.add(mytfZahl2);
myp.add(mytfErg);
myp.add(mybtPlus);
myp.add(dummyLabel1);
myp.add(dummyLabel2);
mycont.add(myp);
setTitle("Einfaches MVC");
setLocation(30, 60);
setSize(600, 400);
setVisible(true);
}
public String getJTextField1() {
return mytfZahl1.getText();
}
public String getJTextField2() {
return mytfZahl2.getText();
}
public String getJTextFieldErg() {
return mytfErg.getText();
}
public void setJTextField1(String str) {
this.mytfZahl1.setText(str);
}
public void setJTextField2(String str) {
this.mytfZahl2.setText(str);
}
public void setJTextFieldErg(String str) {
this.mytfErg.setText(str);
}
public void setAdditionsListener(ActionListener l) {
mybtPlus.addActionListener(l);
}
}
class TRController {
private TRView trView;
private TRModel trModel;
public TRController() {
trView = new TRView();
trModel = new TRModel();
addListener();
}
public TRView getTRView() {
return trView;
}
public void addListener() {
trView.setAdditionsListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double wert1 = Double.valueOf(trView.getJTextField1());
double wert2 = Double.valueOf(trView.getJTextField2());
trModel.addiere(wert1, wert2);
trView.setJTextFieldErg(String.valueOf(trModel.getSumme()));
}
});
}
}