Hallo,
ich soll hier einem ganz blutigem Anfänger erklären, was man unter MVC versteht.
Hab dann erstmal im Netz nach ganz einfachen Beispielen gesucht, aber wie ich finde, waren die meist schon zu kompliziert, da oft auch Interfaces, Observer/Observable mit im Spiel waren.
Ich hab mir dann einfach selbst schnell was aus den Fingern gesagt, aber irgendwie find ich es überhaupt nicht toll
Wobei ich mich auch grade gefragt habe, ob ihr auch die packages view/model/controller benutzt oder wie.
Was haltet ihr denn davon:
View:
Model:
Controller:
Main:
mfg Verjigorm
ich soll hier einem ganz blutigem Anfänger erklären, was man unter MVC versteht.
Hab dann erstmal im Netz nach ganz einfachen Beispielen gesucht, aber wie ich finde, waren die meist schon zu kompliziert, da oft auch Interfaces, Observer/Observable mit im Spiel waren.
Ich hab mir dann einfach selbst schnell was aus den Fingern gesagt, aber irgendwie find ich es überhaupt nicht toll
Wobei ich mich auch grade gefragt habe, ob ihr auch die packages view/model/controller benutzt oder wie.
Was haltet ihr denn davon:
View:
Code:
package view;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JComboBox;
public class View extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
private JComboBox jComboBox = null;
/**
* This is the default constructor
*/
public View() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJButton(), BorderLayout.CENTER);
jContentPane.add(getJComboBox(), BorderLayout.SOUTH);
}
return jContentPane;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
public JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Klick Mich");
}
return jButton;
}
/**
* This method initializes jComboBox
*
* @return javax.swing.JComboBox
*/
public JComboBox getJComboBox() {
if (jComboBox == null) {
jComboBox = new JComboBox();
}
return jComboBox;
}
}
Code:
package model;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Model
{
private static final String message = "Ein einfaches MVC-Beispiel am:\n";
private static final Date today = new Date();
private final List<String> listItems = new ArrayList<String>();
public Model()
{
listItems.add("Eins");
listItems.add("Zwei");
listItems.add("Drei");
listItems.add("4");
listItems.add("365");
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @return the today
*/
public String getToday() {
return new SimpleDateFormat("dd.MM.yyyy").format(today);
}
/**
* @return the listItems
*/
public List<String> getListItems() {
return listItems;
}
}
Code:
package controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import view.View;
import model.Model;
public class Controller {
private final Model model = new Model();
private final View view = new View();
public Controller()
{
view.getJButton().addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(view, model.getMessage()
+ model.getToday());
}
});
for(String item : model.getListItems())
{
view.getJComboBox().addItem(item);
}
view.setVisible(true);
}
}
Code:
package main;
import controller.Controller;
public class Main {
/**
* @param args
*/
public static void main(String[] args)
{
new Controller();
}
}