Skip to content
Snippets Groups Projects
Forked from Keiko Katsuragawa / cs349_w18_examples
10 commits behind the upstream repository.
View.java 1.24 KiB
// HelloMVC: a simple MVC example
// the model is just a counter
// inspired by code by Joseph Mack, http://www.austintek.com/mvc/

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.*;

class View extends JPanel implements IView {

	// the view's main user interface
	private JButton button;

	// the model that this view is showing
	private Model model;

	public View(Model model) {
		
		// create the view UI
		button = new JButton("?");
		button.setMaximumSize(new Dimension(100, 50));
		button.setPreferredSize(new Dimension(100, 50));
		// a GridBagLayout with default constraints centres
		// the widget in the window
		this.setLayout(new GridBagLayout());
		this.add(button, new GridBagConstraints());

		// set the model
		this.model = model;

		// setup the event to go to the "controller"
		// (this anonymous class is essentially the controller)
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				model.incrementCounter();
			}
		});
	}

	// IView interface
	public void updateView() {
		System.out.println("View: updateView");
		button.setText(Integer.toString(model.getCounterValue()));
	}
}