Boa noite galera,
Estou ha quase 2 semanas batendo a cabeca com um codigo, q no comeco parecia facil, porem hj estou quase desistindo, mesmo estando tao perto de conseguir…
Eh o seguinte, Estou montando uma tela de cadastro de aluno.
Essa tela tem o Login, depois tem uma tela de Menu, onde vc escolhe o que vc quer fazer.
Fiz uma tela de cadastro (classe PanelCad), com o basico: Nome, CPF, End e etc… Criei um tratador de eventos pra essa tela (TratadorPanelCad)…
O que eu queria, eh que os dados digitados no JTextField fossem salvos em um ArrayList, que tambem ja tenho uma classe pra isso. Porem nao estou conseguindo fazer com que qdo eu clique no botao, ele salve o cadastro la.
Depois de conseguir salvar o cadastro no ArrayList, quero gravar isso em um arquivo .txt… Fiz um codigozinho ali, ele grava alguma coisa, mas nao sei se eh o cadastro, pq nao consigo salvar ele…
Vou postar aqui as classes que eu estou tendo problemas, gostaria q voces pudessem me ajudar. Deve ser algo tao simples, e nao to conseguindo.
PanelCad - Onde esta a tela de cadastro
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;
class PanelCad extends JFrame implements ActionListener{
private JLabel jlNome, jlCpf, jlTel, jlEnd, jlBairro, jlCid, jlUF, jlCep, jlSexo, jLabel1;
private JTextField jtfNome, jtfCpf, jtfTel, jtfEnd, jtfBairro, jtfCid, jtfUF, jtfCep, tField;
private PanelCurso pCur;
private PanelMenu pMenu;
private JButton bGravar, bLimpar, bSair, bVoltar, bSalvarCad;
private JPanel panelMain, panel1, panel2, panel3, panel4;
private JComboBox box;
private TratadorPanelCad tratador;
public PanelCad() {
// Barra de status
jLabel1 = new JLabel("Status: ");
jLabel1.setForeground(Color.black);
// Botões
bGravar = new JButton("Gravar");
bLimpar = new JButton("Limpar");
bSair = new JButton("Sair");
bVoltar = new JButton("Voltar");
bSalvarCad = new JButton("Salvar");
tratador = new TratadorPanelCad(bLimpar, bSalvarCad, bGravar, bSair);
tField = new JTextField(15);
tField.setForeground(Color.red);
tField.setEditable(false);
pMenu = new PanelMenu();
panelMain = new JPanel(new FlowLayout());
panel1 = new JPanel(new GridLayout(9, 1, 10, 5));
panel2 = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 30));
panel3 = new JPanel(new GridLayout(1, 4, 10, 10));
panel4 = new JPanel(new GridLayout(2, 2, 10, 10));
jlNome = new JLabel("Nome"); panel1.add(jlNome);
jtfNome = new JTextField(12); panel1.add(jtfNome);
jlCpf = new JLabel("CPF"); panel1.add(jlCpf);
jtfCpf = new JTextField(12); panel1.add(jtfCpf);
jlTel = new JLabel("Tel"); panel1.add(jlTel);
jtfTel = new JTextField(12); panel1.add(jtfTel);
jlEnd = new JLabel("Endereço"); panel1.add(jlEnd);
jtfEnd = new JTextField(12); panel1.add(jtfEnd);
jlBairro = new JLabel("Bairro"); panel1.add(jlBairro);
jtfBairro = new JTextField(10); panel1.add(jtfBairro);
jlCid = new JLabel("Cidade"); panel1.add(jlCid);
jtfCid = new JTextField(10); panel1.add(jtfCid);
jlUF = new JLabel("UF"); panel1.add(jlUF);
jtfUF = new JTextField(5); panel1.add(jtfUF);
jlCep = new JLabel("CEP"); panel1.add(jlCep);
jtfCep = new JTextField(10); panel1.add(jtfCep);
jlSexo = new JLabel("Sexo"); panel1.add(jlSexo);
box = new JComboBox();
box.addItem("Escolha");
box.addItem("Masculino");
box.addItem("Feminino");
panel1.add(box);
pCur = new PanelCurso();
panel2.add(pCur);
bVoltar.addActionListener(this);
bLimpar.addActionListener(tratador);
bSalvarCad.addActionListener(tratador);
bGravar.addActionListener(tratador);
bSair.addActionListener(tratador);
panel3.add(bLimpar);
panel3.add(bSalvarCad);
panel3.add(bVoltar);
panel4.add(jLabel1);
panel4.add(tField);
panel4.add(bGravar);
panel4.add(bSair);
panelMain.add(pMenu);
panelMain.add(panel1);
panelMain.add(panel2);
panelMain.add(panel3);
panelMain.add(panel4);
setContentPane(panelMain);
setTitle("CADASTRAR ALUNO");
setSize(400, 650);
setResizable(false);
setBackground(new Color(0, 0, 0, 1));
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (bVoltar == e.getSource()){
super.setVisible(false);
}
}
public JTextField getNome() {
return jtfNome;
}
public void setNome(JTextField nome){
jtfNome = nome;
}
public JTextField getCpf() {
return jtfCpf;
}
public void setCpf(JTextField cpf){
jtfCpf = cpf;
}
public JTextField getTel() {
return jtfTel;
}
public void setTel(JTextField tel){
jtfTel = tel;
}
public JTextField getEnd() {
return jtfEnd;
}
public void setEnd(JTextField end){
jtfEnd = end;
}
public JTextField getBairro() {
return jtfBairro;
}
public void setBairro(JTextField bairro){
jtfBairro = bairro;
}
public JTextField getCid() {
return jtfCid;
}
public void setCid(JTextField cid){
jtfCid = cid;
}
public JTextField getUf() {
return jtfUF;
}
public void setUf(JTextField uf){
jtfUF = uf;
}
public JTextField getCep() {
return jtfCep;
}
public void setCep(JTextField cep){
jtfCep = cep;
}
public void setTfield(JTextField tField){
this.tField = tField;
}
}
TratadorPanelCad - Responsavel pelos eventos do PanelCad
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import javax.swing.JButton;
import javax.swing.JFileChooser;
public class TratadorPanelCad extends MouseAdapter implements ActionListener {
private JButton clean, save, rec, exit;
private CadAluno cadastro;
public TratadorPanelCad(JButton bLimpar, JButton bSalvarCad,
JButton bGravar, JButton bSair){
clean = bLimpar;
save = bSalvarCad;
rec = bGravar;
exit = bSair;
cadastro = new CadAluno();
}
public void actionPerformed(ActionEvent e) {
if (clean == e.getSource()) { // Limpa os todos os campos da tela de cadastro
System.out.println("limpando");
/*
setar.setNome(setText(""));
setar.setCpf(setText(""));
setar.setTel(setText(""));
setar.setEnd(setText(""));
setar.setBairro(setText(""));
setar.setCid(setText(""));
setar.setUf(setText(""));
setar.setCep(setText(""));*/
}
if (save == e.getSource()) { // Salva o cadastro em ArrayList
try {
cadastro.adicionarAluno();
System.out.println("salvando cadastro");
} catch (IOException e1){
e1.printStackTrace();
}
}
if (rec == e.getSource()) {
JFileChooser arquivo = new JFileChooser();
arquivo.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//arquivo.setFileFilter(new filtro());
int result = arquivo.showSaveDialog(rec);
if (result == JFileChooser.CANCEL_OPTION) {
arquivo.cancelSelection();
}else{
try {
ObjectOutputStream objsaida;
File nome = arquivo.getSelectedFile();
//insere a extensão .txt no arquivo
FileOutputStream fsaida = new FileOutputStream(nome + ".txt");
objsaida = new ObjectOutputStream(fsaida);
//grava o objeto getCadAlunos()
objsaida.writeObject(cadastro.getCadAlunos());
fsaida.close();
objsaida.close();
}
catch(IOException ex){
System.out.println("Erro: " + ex.getMessage());
}
}
}
if (exit == e.getSource()) {
System.exit(0); // Sai do sistema
}
}
}
CadAluno - Onde fica o codigo
import java.io.IOException;
import java.util.ArrayList;
public class CadAluno {
ArrayList<Aluno> alunos = new ArrayList<Aluno>();
public boolean adicionar(Aluno a) throws IOException {
return alunos.add(a);
}
public boolean remover(String nome) {
Aluno alunoRemove = new Aluno();
alunoRemove.setNome(nome);
return alunos.remove(alunoRemove);
}
public Aluno buscarPorNome(String nome) {
for (Aluno busca : alunos) {
if (busca.getNome().equalsIgnoreCase(nome))
{
return busca;
}
}
return null;
}
public int quantidade() {
return this.alunos.size();
}
public boolean cadastrado(String nome) {
Aluno verificar = new Aluno();
verificar.setNome(nome);
return alunos.contains(verificar);
}
public ArrayList<Aluno> getCadAlunos() {
return this.alunos;
}
}
Aluno - Dados dos Alunos
public class Aluno {
private String nome;
private String cpf;
private String telefone;
private String endereco;
private String bairro;
private String cidade;
private String uf;
private String cep;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getTel() {
return telefone;
}
public void setTel(String telefone) {
this.telefone = telefone;
}
public String getEnd() {
return endereco;
}
public void setEnd(String endereco) {
this.endereco = endereco;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCid() {
return cidade;
}
public void setCid(String cidade) {
this.cidade = cidade;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public boolean equals(Object obj) {
if (((Aluno) obj).getNome().equalsIgnoreCase(this.nome))
return true;
return super.equals(obj);
}
}
PanelCurso - So os JRadioButtons
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import java.awt.GridLayout;
public class PanelCurso extends JPanel{
private JRadioButton jrbCC, jrbSI, jrbBD, jrbRC, jrbAS, jrbAdm, jrbEng, jrbCCont;
private ButtonGroup jrbGroup;
public PanelCurso(){
jrbGroup = new ButtonGroup();
jrbCC = new JRadioButton("Ciencia da Computação");
jrbSI = new JRadioButton("Sistemas de Informação");
jrbBD = new JRadioButton("Banco de Dados");
jrbRC = new JRadioButton("Redes de Computadores");
jrbAS = new JRadioButton("Analise de Sistemas");
jrbAdm = new JRadioButton("Administracao");
jrbEng = new JRadioButton("Engenharia");
jrbCCont = new JRadioButton("Ciencias Contabeis");
add(jrbCC); add(jrbSI);
add(jrbRC); add(jrbBD);
add(jrbAS); add(jrbAdm);
add(jrbEng); add(jrbCCont);
jrbGroup.add(jrbCC); jrbGroup.add(jrbSI);
jrbGroup.add(jrbBD); jrbGroup.add(jrbRC);
jrbGroup.add(jrbAS); jrbGroup.add(jrbAdm);
jrbGroup.add(jrbEng); jrbGroup.add(jrbCCont);
setLayout(new GridLayout(0,2));
}
}
PanelMenu - Menu (so pra aparecer alguma coisa, nao serve pra nada)
import javax.swing.JPanel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class PanelMenu extends JPanel{
private JMenuBar menubar;
private JMenu arquivo, editar, ajuda;
private JMenuItem novo, consultar, salvar, sair, undo, opcoes, versao, sobre;
public PanelMenu(){
menubar = new JMenuBar();
// Menu Arquivo
arquivo = new JMenu("Arquivo");
novo = new JMenuItem("Novo");
consultar = new JMenuItem("Consultar");
salvar = new JMenuItem("Salvar");
sair = new JMenuItem("Sair");
menubar.add(arquivo);
arquivo.add(novo);
arquivo.add(consultar);
arquivo.add(salvar);
arquivo.add(sair);
// Menu Configurações
editar = new JMenu("Editar");
undo = new JMenuItem("Desfazer - crtl+z");
opcoes = new JMenuItem("Opções");
menubar.add(editar);
editar.add(undo);
editar.add(opcoes);
// Menu Ajuda
ajuda = new JMenu("Ajuda");
versao = new JMenuItem("Versao");
sobre = new JMenuItem("Sobre");
add(menubar);
menubar.add(ajuda);
ajuda.add(sobre);
ajuda.add(versao);
class sair implements ActionListener{
public void actionPerformed (ActionEvent e){
System.exit(0);
}
}
sair.addActionListener(new sair());
setLayout(new FlowLayout());
}
}
Menu - Onde escolho o que quero fazer no programa
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.FlowLayout;
import javax.swing.*;
public class Menu extends JFrame{
private JButton bAdd, bDelet, bBusca, bLista, bQtd, bSair;
private JPanel panel;
private TratadorMenu tratador;
public Menu() {
bAdd = new JButton("ADICIONAR ALUNO");
bDelet = new JButton("REMOVER ALUNO");
bBusca = new JButton("BUSCAR ALUNO");
bLista = new JButton("LISTAR ALUNOS");
bQtd = new JButton("QUANTIDADE DE ALUNOS");
bSair = new JButton("SAIR");
panel = new JPanel(new GridLayout(6, 1, 0, 20));
tratador = new TratadorMenu(bAdd, bDelet, bBusca, bLista, bQtd, bSair);
panel.add(bAdd);
panel.add(bDelet);
panel.add(bBusca);
panel.add(bLista);
panel.add(bQtd);
panel.add(bSair);
add(panel);
bAdd.addActionListener(tratador);
bDelet.addActionListener(tratador);
bBusca.addActionListener(tratador);
bLista.addActionListener(tratador);
bQtd.addActionListener(tratador);
bSair.addActionListener(tratador);
setTitle("MENU DE OPCOES");
setSize(400, 350);
setLayout(new FlowLayout(FlowLayout.CENTER,0,30));
setLocationRelativeTo(null);
setVisible(true);
}
}
TratadorMenu - Trata o evento dos menus
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class TratadorMenu implements ActionListener {
private JButton add, del, bus, lis, qtd, sai;
public TratadorMenu(JButton bAdd, JButton bDelet, JButton bBusca,
JButton bLista, JButton bQtd, JButton bSair){
add = bAdd;
del = bDelet;
bus = bBusca;
lis = bLista;
qtd = bQtd;
sai = bSair;
}
public void actionPerformed(ActionEvent e) {
if (add == e.getSource()) {
// falta evento pra fechar janela de menu
new PanelCad().setVisible(true); // Abre PanelCad
}
if (del == e.getSource()) {
// falta evento pra fechar janela de menu
new Menu().setVisible(true); // Abre Deletar Aluno
}
if (bus == e.getSource()) {
// falta evento pra fechar janela de menu
new Menu().setVisible(true); // Abre Buscar Aluno
}
if (lis == e.getSource()) {
// falta evento pra fechar janela de menu
new ListarAlunos().setVisible(true); // Lista todos os Alunos
}
if (qtd == e.getSource()) {
// falta evento pra fechar janela de menu
new MostraQuantidade(); // Mostra a quantidade de alunos cadastrados
}
if (sai == e.getSource()) {
System.exit(0); // Sai do sistema
}
}
}
Login - a senha eh 123abc
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Login extends JFrame implements ActionListener {
private JPasswordField edCod;
private JLabel lbCod;
private JButton btSend;
private String sCodAcess;
private JPanel panel;
public Login() {
edCod = new JPasswordField(10);
lbCod = new JLabel("Password");
btSend = new JButton(">OK<");
sCodAcess = new String("123abc");
panel = new JPanel(new FlowLayout());
panel.add(lbCod);
panel.add(edCod);
panel.add(btSend);
add(panel);
setTitle("LOGIN");
setLayout(new FlowLayout(FlowLayout.CENTER,0,125));
setSize(400, 350);
setLocationRelativeTo(null);
setVisible(true);
btSend.addActionListener(this);
}
public boolean ValidaCod(String sCod) {
if (sCod.equalsIgnoreCase(sCodAcess)) {
return true;
} else
return false;
}
public void actionPerformed(ActionEvent evento) {
Object evt = evento.getSource();
if (evt == btSend) {
if (ValidaCod(edCod.getText())) {
super.setVisible(false);
new Menu().setVisible(true); // Abre o Menu de opções
}
}
}
}
Main
import javax.swing.JFrame;
public class CadMain {
public static void main(String args[]) {
JFrame.setDefaultLookAndFeelDecorated(true);
new Login().setVisible(true);
}
}
Bom, ta tudo ai galera, se alguem conseguir me ajudar a gravar, ficarei mto feliz, soh falta isso…
Boa noite e obrigado a todos que puderem colaborar.