import javax.swing.*;
import java.awt.*;
public class View extends JPanel {
// Attribute
private Model model;
private Controller controller;
// Weiter grafische Attribute stehen hier (Komponenten)
protected Zeichnung zeichnung;
protected JButton button;
// Konstruktor
public View(Model m) {
this.model = m;
controller = new Controller(this, model);
// Initialisierung der Komponenten
zeichnung = new Zeichnung();
button = new JButton();
// Einstellen der Grafik
setBounds(0,0,600,600);
setLayout(null);
add(zeichnung);
button.setText("Knopf");
button.addActionListener(controller);
add(button);
button.setBounds(30, 30, 120, 35);
}
// Methoden
public void zeichneAufJComponent(String s) {
zeichnung.zeichne(s);
}
// Innere Klasse(n)
/**
* Es ist durchaus sinnvoll, einen grafischen Komponenten zu erstellen
* (z.B. wie hier JComponent), der alle Zeichenbefehle ausführt. Denn
* die Zeichenbefehle sollten nicht direkt von der View ausgeführt
* werden :
*/
class Zeichnung extends JComponent {
// Attribute
private String bildschirm;
// Konstruktor
public Zeichnung() {
// Attribute initialisieren
bildschirm = "Rot";
// Zeichnung einstellen
setBounds(0, 0, 600, 600);
}
// Methoden
/**
* >siehe zeichneAufJComponent in Oberklasse
*/
private void zeichne(String b) {
bildschirm = b;
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
if(bildschirm.equals("Rot")) {
g2d.setColor(Color.red);
g2d.fillRect(200, 200, 150, 150);
}
if(bildschirm.equals("Schwarz")) {
g2d.setColor(Color.black);
g2d.fillRect(200, 300, 150, 150);
}
}
}
}