Ir ao conteúdo
  • Cadastre-se

Java Java Swing não armazena dados da lista


Posts recomendados

O objetivo do programa é um carrinho de compras onde é possível cadastrar fornecedores e produtos, com finalidade de adicionar itens em um carrinho e fechar o carrinho com o total em dinheiro.

 

O problema é que quando os dados são inseridos na tela de fornecedores eles são armazenados corretamente na lista quando se clica em imprimir, mas quando retorna ao menu principal, toda a lista é limpa, ou seja os dados não são armazenados.

 

"Classe Fornecedor"

 

package com.company.view;

import com.company.model.Fornecedor;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import java.util.List;


public class TelaFornecedor extends JFrame implements ActionListener, WindowListener {
    protected Dimension dLabel, dButton, dFrame, dTextField, dTextArea;
    protected Label lblTituloPag, lblTitulo;
    protected Button bttCadastrar, bttVoltar, bttImprimir;
    protected TextField txtIdFornecedor, txtNomeFornecedor, txtContatoFornecedor, txtFoneFornecedor, txtEmailFornecedor;
    protected TextArea txtMsg;

    public List<Fornecedor> listaFornecedores = new ArrayList<>();



    public TelaFornecedor(){
        dLabel = new Dimension(40,20);
        dButton = new Dimension(80,20);
        dTextField = new Dimension(150,20);
        dTextArea = new Dimension(180,200);
        dFrame = new Dimension(600, 530);

        setResizable(false);
        setSize(dFrame);
        setLocation(600,150);
        setLayout(null);

        /////////////////////////////////////////////

        //Titulo do Menu
        lblTituloPag = new Label("CADASTRO DE FORNECEDORES");
        lblTituloPag.setSize(400,20);
        lblTituloPag.setLocation(200,25);
        add(lblTituloPag);

        //////////////////////////////////////////////

        //Entrada do ID de Fornecedor
        lblTitulo = new Label ("ID:");
        lblTitulo.setSize(dLabel);
        lblTitulo.setLocation(25,70);
        add(lblTitulo);

        txtIdFornecedor = new TextField(null);
        txtIdFornecedor.setSize(200, 20);
        txtIdFornecedor.setLocation(80,70);
        add(txtIdFornecedor);

        //////////////////////////////////////////////

        //Entrada do Nome de Fornecedor
        lblTitulo = new Label ("Nome:");
        lblTitulo.setSize(dLabel);
        lblTitulo.setLocation(25,100);
        add(lblTitulo);

        txtNomeFornecedor = new TextField(null);
        txtNomeFornecedor.setSize(200, 20);
        txtNomeFornecedor.setLocation(80,100);
        add(txtNomeFornecedor);

        //////////////////////////////////////////////

        //Entrada do Contato de Fornecedor
        lblTitulo = new Label ("Contato:");
        lblTitulo.setSize(50, 20);
        lblTitulo.setLocation(25,130);
        add(lblTitulo);

        txtContatoFornecedor = new TextField(null);
        txtContatoFornecedor.setSize(200, 20);
        txtContatoFornecedor.setLocation(80,130);
        add(txtContatoFornecedor);

        //////////////////////////////////////////////

        //Entrada do Fone de Fornecedor
        lblTitulo = new Label ("Fone:");
        lblTitulo.setSize(dLabel);
        lblTitulo.setLocation(25,160);
        add(lblTitulo);

        txtFoneFornecedor = new TextField(null);
        txtFoneFornecedor.setSize(200, 20);
        txtFoneFornecedor.setLocation(80,160);
        add(txtFoneFornecedor);

        //////////////////////////////////////////////

        //Entrada do Email de Fornecedor
        lblTitulo = new Label ("Email:");
        lblTitulo.setSize(dLabel);
        lblTitulo.setLocation(25,190);
        add(lblTitulo);

        txtEmailFornecedor = new TextField(null);
        txtEmailFornecedor.setSize(200, 20);
        txtEmailFornecedor.setLocation(80,190);
        add(txtEmailFornecedor);

        //////////////////////////////////////////////

        txtMsg = new TextArea(null);
        txtMsg.setSize(520, 220);
        txtMsg.setLocation(30, 240);
        add(txtMsg);

        //////////////////////////////////////////////
        bttCadastrar = new Button("Cadastrar");
        bttCadastrar.setSize(200, 35);
        bttCadastrar.setLocation(350,70);
        bttCadastrar.addActionListener(this);
        add(bttCadastrar);

        bttImprimir = new Button("Imprimir Fornecedores");
        bttImprimir.setSize(200, 35);
        bttImprimir.setLocation(350,123);
        bttImprimir.addActionListener(this);
        add(bttImprimir);

        bttVoltar = new Button("Voltar");
        bttVoltar.setSize(200, 35);
        bttVoltar.setLocation(350,175);
        bttVoltar.addActionListener(this);
        add(bttVoltar);
        dispose();

        addWindowListener(this);
    }






    @Override
    public void actionPerformed(ActionEvent e) {



        if (e.getSource()==bttCadastrar){
            Fornecedor fornecedor = new Fornecedor();
            fornecedor.setIdForn(Integer.parseInt(txtIdFornecedor.getText()));
            fornecedor.setNome(txtNomeFornecedor.getText());
            fornecedor.setContato(txtContatoFornecedor.getText());
            fornecedor.setFone(txtFoneFornecedor.getText());
            fornecedor.setEmail(txtEmailFornecedor.getText());

            listaFornecedores.add(fornecedor);
            JOptionPane.showMessageDialog(null,
                    "Fornecedor Cadastrado!",
                    "Informação",
                            JOptionPane.INFORMATION_MESSAGE);


            //Limpar campos
            txtIdFornecedor.selectAll();
            txtIdFornecedor.setText("");
            txtNomeFornecedor.selectAll();
            txtNomeFornecedor.setText("");
            txtContatoFornecedor.selectAll();
            txtContatoFornecedor.setText("");
            txtFoneFornecedor.selectAll();
            txtFoneFornecedor.setText("");
            txtEmailFornecedor.selectAll();
            txtEmailFornecedor.setText("");
        }

        if (e.getSource()==bttImprimir) {
            txtMsg.selectAll();
            txtMsg.setText("");
            txtMsg.append("- LISTA DE FORNECEDORES -" + "\n");

            for (Fornecedor fornecedor  : listaFornecedores) {
                txtMsg.append("\n\nID: " + fornecedor.getIdForn() +
                        "\nNome: " + fornecedor.getNome() +
                        "\nContato: " + fornecedor.getContato() +
                        "\nTelefone: " + fornecedor.getFone() +
                        "\nEmail: " + fornecedor.getEmail() +
                        "\n\n---------------------------------");
            }
        }

        if (e.getSource()==bttVoltar){
            TelaMenu TelaMenu = new TelaMenu();
            TelaMenu.setVisible(true);
            dispose();
        }
    }

    @Override
    public void windowOpened(WindowEvent e) {

    }

    @Override
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }

    @Override
    public void windowClosed(WindowEvent e) {

    }

    @Override
    public void windowIconified(WindowEvent e) {

    }

    @Override
    public void windowDeiconified(WindowEvent e) {

    }

    @Override
    public void windowActivated(WindowEvent e) {

    }

    @Override
    public void windowDeactivated(WindowEvent e) {

    }
}

 

Link para o comentário
Compartilhar em outros sites

Isso acontece porque a lista de fornecedores está sendo criada dentro da interface gráfica. Quando você dá um dispose, tudo é apagado.

 

Você tem que enviar essa lista para outro lugar. Ou poderia criar a lista na classe que chama sua tela de cadastro, aí passa a lista por meio do construtor. Dessa forma quando a tela for fechada, a referência da lista não será perdida.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...