Gravar em objetos

4 respostas
M

Olá pesoal!!!
Tenho que fazer um trabalho de faculdade que consiste em cadastrar filmes, eu já criei a interface, tratadores de eventos, etc.
Mas neste programa após preencher os campos de cadastro do filme, quando o usuário clicar em um botão cadastrar toda a informação inserida no formulário deverá ser armazenada em um objeto da classe Filme e, a mesma informação, deverá ser impressa - devidamente formatada - em uma área de texto.
Tenho uma noção de como imprimir, mas não consigo fazer aparte referente a gravação. Alguém poderia por favor dar algum exemplo, código referente a parte de gravação, mesmo sendo em outro tipo de sistema, para ter uma base para poder realizar esta tarefa.
Desde já, Obrigado.

4 Respostas

diego2005

Segue um exemplo resumido:

class Filme {
    private String nome;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CadastraFilme extends JFrame {
    private JTextField txtNome;
    private JButton btnCadastrar;  
    private Filme filme;  
    public CadastraFilme() {
        txtNome = new JTextField(20);
        btnCadastrar = new JButton("Cadastrar");

        add(txtNome, BorderLayout.NORTH);
        add(txtCadastrar, BorderLayout.SOUTH);

        btnCadastrar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(txtNome.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "Informe o nome do livro");
                    return; 
                }

                filme = new Filme();
                filme.setNome(txtNome.getText());
            }
        });

        pack();
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

Esse exemplo cadastra apenas UM livro, que tem apenas o atributo nome, então é só você seguir o exemplo e adicionar mais atributos. E caso queira cadastrar vários livros, use uma Collection como ArrayList para armazenar vários livros.

Espero que ajude.

T+

ps.: não testei esse códido, fiz ele aqui agora, não sei se vai funcionar certinho..

M

package cadastro;

import java.awt.<em>;

import javax.swing.</em>;

import java.awt.event.*;

/**

*Classe que cria formulario de cadastro

*@author Mauricio Castro Camargo

*@version 1.6

*/

public class Cadastro extends JFrame implements ActionListener{
private JLabel label1,label2,label3,label4,label5;
private JTextField texto1,texto2,texto3,texto4,texto5;
private	JButton botaoCadastra,botaoCancela;
private	JPanel panelCima,panelBaixo;
private JList lista;

/**

  • Construtor da classe
    */
    public Cadastro(){

/** Define dimensões, localização da janela */

super("Cadastro de Cliente");
	setSize(450,250);
	setLocation(100,100);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	 		
	label1 = new JLabel("Nome:  ");
	label2 = new JLabel("Gênero:  ");
	label3 = new JLabel("Diretor:   ");
	label4 = new JLabel("Faixa Etária:       ");
	label5 = new JLabel("Código do Filme: ");
	lista = new JList();
	
	 		
	botaoCadastra = new JButton("Cadastrar");
	botaoCadastra.addActionListener(this);
	botaoCancela = new JButton("Cancelar");
	botaoCancela.addActionListener(this);
	
	texto1 = new JTextField(20);
	texto2 = new JTextField(20);
	texto3 = new JTextField(20);
	texto4 = new JTextField(20);
	texto5 = new JTextField(20);

/** Disposição dos elementos na janela */

panelCima = new JPanel(new GridLayout(7,1,1,1));
	panelBaixo = new JPanel(new GridLayout(1,3));
	
	getContentPane().add(panelCima,BorderLayout.CENTER);
	getContentPane().add(panelBaixo,BorderLayout.SOUTH);

/** Coloca os elementos na janela */

panelCima.add(label1);
	panelCima.add(texto1);
	panelCima.add(label2);
	panelCima.add(texto2);
	panelCima.add(label3);
	panelCima.add(texto3);
	panelCima.add(label4);
	panelCima.add(texto4);
	panelCima.add(label5);
	panelCima.add(texto5);
	panelCima.add(lista);
	
	
	panelBaixo.add(botaoCadastra);
	panelBaixo.add(botaoCancela);
}

/**
 * Método para cadastrar as informações
 *
 */
 void cadastraFilme(){
	 Filme filme = new Filme();
     filme.setNome(texto1.getText());
     filme.setNome(texto2.getText());
     filme.setNome(texto3.getText());
     filme.setNome(texto4.getText());
     filme.setNome(texto5.getText());
 }

/**
 *Evento para cadastrar e limpar os campos
 *@param evento
 */
public void actionPerformed(ActionEvent evento){
	
	if(evento.getSource() == botaoCancela){
		cadastraFilme();
		texto1.setText("");
		texto2.setText("");
		texto3.setText("");
		texto4.setText("");
		texto5.setText("");
	} 		
}

/**
* Main, cria uma referência à classe Cadastro
*/
public static void main(String args[]){

Cadastro c = new Cadastro();
	c.setVisible(true);
}

}

Duas dúvidas, em qual arquivo eu colocaria o ArrayList e no caso ficaria assim:

ArrayList lista = new ArrayList();

add.lista©;
diego2005

Você pode colocar o ArrayList na classe CadastraFilme, ai você vai adicionando os filmes no seu método cadastraFilme:

void cadastraFilme(){ Filme filme = new Filme(); filme.setNome(texto1.getText()); filme.setNome(texto2.getText()); filme.setNome(texto3.getText()); filme.setNome(texto4.getText()); filme.setNome(texto5.getText()); meuArrayList.add(filme); // adiciona o Filme no ArrayList }

T+

M

Cara, muito obrigado pela ajuda!!!
Vc esclareceu muita coisa.
Agora só falta mostrar as informações em uma area de texto, vou analisar e ver em alguns livros para terminar esta tarefa, qualquer dúvida volto a postar aqui. :smiley:

Criado 18 de agosto de 2007
Ultima resposta 19 de ago. de 2007
Respostas 4
Participantes 2