Sistema Simples em MVC + Swing para fins didáticos

8 respostas
J

Olá Pessoal,
Esse é meu primeiro post.
Tenho que fazer um trabalho pra faculdade, de um SISTEMA DE LIVRARIA em MVC.
Só que, não posso usar BANCO DE DADOS.
Minha dúvida é em relação a exibição “do que eu cadastrei”
Como faço pra exibir o que cadastrei, e, se eu quiser fazer um campo CONSULTA, como ficaria?
Usando esse exemplo:

Modelo;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

/**
 *
 * @author alunolab07
 */
public class Autor {
    
    private String nome;
    private int idade;

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }    
    
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.util.ArrayList;
/**
 *
 * @author alunolab07
 */
public class Persistencia {  
    public static ArrayList<Autor> vetAutor = new  ArrayList<Autor>();  
    public static boolean cadastrarAutor(Autor a){
                vetAutor.add(a);
        return true;
    }
    public static ArrayList<Autor> retornaTodoVetorAutor(){      
        return vetAutor;
    }    
}

Controle;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import modelo.Autor;
import visao.InterfaceGrafica;

/**
 *
 * @author alunolab07
 */
public class Aplicacao {
    
   public boolean controleCadastrarAutor(InterfaceGrafica i){
       
       Autor a = new Autor();
       a.setIdade(Integer.parseInt( (i.getjTextField2()).getText()) );
       a.setNome( (i.getjTextField1()).getText() );
       
       a.modeloCadastrarAutor(a);
       
       return true;
       
   }
    
    
}

Visão;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * NewJFrame.java
 *
 * Created on 31/10/2011, 20:02:10
 */
package visao;

import controle.Aplicacao;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import modelo.Persistencia;

/**
 *
 * @author alunolab07
 */
public class InterfaceGrafica extends javax.swing.JFrame {

    Aplicacao ap = new Aplicacao();
    
    /** Creates new form NewJFrame */
    public InterfaceGrafica() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Autor"));
        jPanel1.setName(""); // NOI18N

        jLabel1.setText("Nome");

        jButton1.setText("Salvar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel2.setText("Idade");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(267, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(61, 61, 61))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1))
                .addGap(33, 33, 33)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jTextField1)
                    .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE))
                .addContainerGap(108, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(23, 23, 23)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel2))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(28, 28, 28))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel1.getAccessibleContext().setAccessibleName("Autor");

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        
        if (ap.controleCadastrarAutor(this))
           JOptionPane.showMessageDialog(null, "Cadastrado OK", "Cadastrado OK", 1);
        else
           JOptionPane.showMessageDialog(null, "NOT OK", "NOT OK", 0);
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new InterfaceGrafica().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration

    public JTextField getjTextField1() {
        return jTextField1;
    }

    public JTextField getjTextField2() {
        return jTextField2;
    }

}

8 Respostas

guilherme.dio

Para exibir oq você cadastrou basta varrer o seu ArrayList, e na hora de consultar um valor específico, vc realiza a varredura porém com as condições que você necessitar.

J

Sim, até ai blz.

Mas como percorrer? pode exemplificar em código?

Desculpe, mas sou leigo no assunto.

guilherme.dio

Vou dar um exemplo simples, usando os atributos que vc definiu:

Este método lista todos os autores que se encontram no ArrayList:

public void listarAutores(List<Autor> Autores)
{
   for(Autor objAutor : Autores)
  {
      JOptionPane.showMessageDialog(this,
                      "Nome do Autor: "+objAutor.getNome()
                    +"\nIdade do Autor: "+objAutor.getIdade(),
                      "Listando os Autores",
                      JOptionPane.INFORMATION_MESSAGE); 
  }
}

Este aqui lista o(s) autor(es) que for(em) encontrado(s) na lista de acordo com o nome que o usuario escolher:

public void listarAutores(List<Autor> Autores,String nomeAutor)
{
   for(Autor objAutor : Autores)
  {
      if(objAutor.getNome().equals(nomeAutor)
      {
         JOptionPane.showMessageDialog(this,
                         "Nome do Autor: "+objAutor.getNome()
                       +"\nIdade do Autor: "+objAutor.getIdade(),
                         "Autor Encontrado !",
                         JOptionPane.INFORMATION_MESSAGE);
     } 
  }
}
J

Muito Obrigado

M

Você vai manter esses dados somente em memória, ou vai persistir em arquivos? já que não pode usar banco de dados.

Você também precisa colocar uma tabela para exibir os cadastrados.

J

Somente em memória.

Essa solução do ArrayList que me apresentou… como eu faria em mvc?
passando pelas 2 camadas: Modelo(persistencia) e Controle(Aplicação), e apresentar no VIEW (swing)

Abraço

guilherme.dio

É só você utilizar aquela instância global da classe Aplicacao que vc declarou na classe de VIEW.

Nesta instancia irão conter todos os dados, basta você utilizar os métodos que postei logo acima usando a instância como parâmetro.

J

VLW!

Criado 23 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 8
Participantes 3