MVC – Model-View-Controller
Exemplo – Cadastro de Funcionário
VIEW
Classe Janela
package br.home.mvc.visao;
import java.awt.FlowLayout;
import javax.swing.JFrame;
public class Janela extends JFrame
{
Janela()
{
setTitle("Cadastrar Funcionário");
setBounds(100,100,325,170);
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
}
}
Classe Rotulo
package br.home.mvc.visao;
import java.awt.Dimension;
import javax.swing.JLabel;
public class Rotulo extends JLabel
{
public Rotulo(String arg0)
{
super(arg0);
setPreferredSize(new Dimension(100,30));
}
}
Classe CaixaDeTexto
package br.home.mvc.visao;
import java.awt.Dimension;
import javax.swing.JTextField;
public class CaixaDeTexto extends JTextField
{
CaixaDeTexto()
{
setPreferredSize(new Dimension(205,30));
}
}
Classe Botao
package br.home.mvc.visao;
import java.awt.Dimension;
import javax.swing.JButton;
public class Botao extends JButton
{
public Botao(String rotulo)
{
super(rotulo);
setPreferredSize(new Dimension(100,30));
}
}
Classe Cadastrar
package br.home.mvc.visao;
import java.awt.event.ActionListener;
import java.util.Observer;
import br.home.mvc.modelo.Funcionario;
abstract class Cadastrar implements Observer
{
private Janela cadastro;
private Rotulo codigoR, nomeR, salarioR;
private CaixaDeTexto codigo, nome, salario;
private Botao cadastrar, visualizar, sair;
private Funcionario f;
Cadastrar(Funcionario f)
{
cadastro = new Janela();
codigoR = new Rotulo("Código");
nomeR = new Rotulo("Nome");
salarioR = new Rotulo("Salário");
codigo = new CaixaDeTexto();
nome = new CaixaDeTexto();
salario = new CaixaDeTexto();
cadastrar = new Botao("Cadastrar");
visualizar = new Botao("Visualizar");
sair = new Botao("Sair");
cadastro.getContentPane().add(codigoR);
cadastro.getContentPane().add(codigo);
cadastro.getContentPane().add(nomeR);
cadastro.getContentPane().add(nome);
cadastro.getContentPane().add(salarioR);
cadastro.getContentPane().add(salario);
cadastro.getContentPane().add(cadastrar);
cadastro.getContentPane().add(visualizar);
cadastro.getContentPane().add(sair);
this.f = f;
f.addObserver(this);
cadastro.setVisible(true);
}
public int getCodigo() {
return Integer.valueOf(codigo.getText());
}
public void setCodigo(int codigo) {
this.codigo.setText(String.valueOf(codigo));
}
public String getNome() {
return nome.getText();
}
public void setNome(String nome) {
this.nome.setText(nome);
}
public double getSalario() {
return Double.valueOf(salario.getText()).doubleValue();
}
public void setSalario(double salario) {
this.salario.setText(String.valueOf(salario));
}
public void addCadastrarListener(ActionListener a)
{
cadastrar.addActionListener(a);
}
public void addVisualizarListener(ActionListener a)
{
visualizar.addActionListener(a);
}
public void addSairListener(ActionListener a)
{
sair.addActionListener(a);
}
protected Funcionario getF() {
return f;
}
}
MODEL
Classe Funcionário
package br.home.mvc.modelo;
import java.util.Observable;
public class Funcionario extends Observable
{
private int codigo;
private String nome;
private double salario;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
setChanged();
notifyObservers();
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
setChanged();
notifyObservers();
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
setChanged();
notifyObservers();
}
}
CONTROLLER
Classe ControleCadastrar
package br.home.mvc.visao;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
import javax.swing.JOptionPane;
import br.home.mvc.modelo.Funcionario;
public class ControleCadastrar extends Cadastrar
{
public ControleCadastrar(Funcionario f)
{
super(f);
addCadastrarListener(new CadastrarListener());
addVisualizarListener(new VisualizarListener());
addSairListener(new SairListener());
}
@Override
public void update(Observable arg0, Object arg1)
{
JOptionPane.showMessageDialog(null,"Atualização realizada
com sucesso!!!");
}
class CadastrarListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
getF().setCodigo(getCodigo());
getF().setNome(getNome());
getF().setSalario(getSalario());
}
}
class VisualizarListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"Código:
"+getF().getCodigo()+"\nNome: "+getF().getNome()+"\nSalário:
"+getF().getSalario());
}
}
class SairListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
}
APLICAÇÂO
Classe FuncionarioApp
package br.home.mvc.app;
import br.home.mvc.modelo.Funcionario;
import br.home.mvc.visao.ControleCadastrar;
public class FuncionarioApp
{
public static void main(String[] args)
{
new ControleCadastrar(new Funcionario());
}
}
Download

MVC – Model-View