Como transferir um código string para um programa filho

7 respostas
anyblueangel3

Cordiais saudações.

Eu gostaria de passar o código de um produto da classe GuiCadastroProdutos para a classe GuiCadForProduto. É o id de um produto cadastrado no meu estoque. Vejam o código da classes de nível acima, logo abaixo:

Este abaixo é o GuiCadastroProdutos.java

package view;

import dao.CatDAO;
import dao.ProDAO;
import dao.UnidadesDAO;
import empresaiv.BD;
import empresaiv.GuiMenuPrincipal;
import empresaiv.Util;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


/**
 *
 * @author Ronaldo Rodrigues Godoi
 */
public class GuiCadastroProdutos extends JPanel{
    
    JLabel lbCad_pro; //, lbLargura, lbAltura;
    
    boolean inclusao = false;
    
    JLabel lbId, lbDescricao, lbCategoria, lbQuantidade, lbUnidade,
           lbPreco_venda, lbPreco_ultima_compra, lbData_cadastro;
    
    JLabel lbDescricao_categoria, lbDescricao_unidade;
    
    JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar, btSair;
    
    JButton btCadForProduto;
    
    JTextField tfId, tfDescricao, tfCategoria, tfQuantidade, tfUnidade,
           tfPreco_venda, tfPreco_ultima_compra, tfData_cadastro;
    
    Date nova_data = new Date();
    DateFormat formatoData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    
    private ProDAO produtos;
    private CatDAO categorias;
    private UnidadesDAO unidades;
    
    private Util util = new Util();
        
    public GuiCadastroProdutos() {
        
        inicializarComponentes();
        definirEventos();
        
    }
    
    public void inicializarComponentes() {

        setLayout(null);
        
        //Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
        //lbLargura = new JLabel(""+tela.width);
        //lbAltura = new JLabel(""+tela.height);
        //int altura = 1000;
        //int largura = 1800;
                
        lbCad_pro = new JLabel("Cadastro de Produtos");
        
        lbId = new JLabel("Código do Produto: ");
        lbDescricao = new JLabel("Descrição: ");
        lbCategoria = new JLabel("Categoria: ");
        lbDescricao_categoria = new JLabel("Descrição da Categoria: ");
        lbQuantidade = new JLabel("Quantidade em Estoque: ");
        lbUnidade = new JLabel("Unidade: ");
        lbDescricao_unidade = new JLabel("Unidade: ");
        lbPreco_venda = new JLabel("Preço de Venda: ");
        lbPreco_ultima_compra = new JLabel("Preço da última compra: ");
        lbData_cadastro = new JLabel("Data de Cadastro: ");
                
        tfId = new JTextField(10);
        tfDescricao = new JTextField(60);
        tfCategoria = new JTextField(10);
        tfQuantidade = new JTextField(10);
        tfUnidade = new JTextField(10); 
        tfPreco_venda = new JTextField(10);
        tfPreco_ultima_compra = new JTextField(10);
        tfData_cadastro = new JTextField(16);
        
        //tfData_cadastro.setText(formatoData.format(nova_data.getTime()));
        
        btGravar = new JButton(null, new ImageIcon("c:/icones/icon12/gravar.gif"));
        btGravar.setToolTipText("Gravar");
        btAlterar = new JButton(null, new ImageIcon("c:/icones/icon12/alterar.gif"));
        btAlterar.setToolTipText("Alterar");
        btExcluir = new JButton(null, new ImageIcon("c:/icones/icon12/excluir.gif"));
        btExcluir.setToolTipText("Excluir");
        btLocalizar = new JButton(null, new ImageIcon("c:/icones/icon12/localizar.png"));
        btLocalizar.setToolTipText("Localizar");
        btNovo = new JButton(null, new ImageIcon("c:/icones/icon12/novo.gif"));
        btNovo.setToolTipText("Novo");
        btCancelar = new JButton(null, new ImageIcon("c:/icones/icon12/cancelar.gif"));
        btCancelar.setToolTipText("Cancelar");
        btSair = new JButton(null, new ImageIcon("c:/icones/icon12/sair.png"));
        btSair.setToolTipText("Sair");
        
        btCadForProduto = new JButton(" Fornecedor deste produto ");
        
        lbCad_pro.setBounds(35, 75, 150, 25);
        
        lbId.setBounds(35, 175, 150, 25);
        tfId.setBounds(200, 175, 150, 25);
        lbDescricao.setBounds(500, 175, 170, 25);
        tfDescricao.setBounds(600, 175, 270, 25);
        lbCategoria.setBounds(35, 250, 100, 25);
        tfCategoria.setBounds(120, 250, 80, 25);
        lbDescricao_categoria.setBounds(35, 275, 300, 25);
        lbQuantidade.setBounds(480, 250, 200, 25);
        tfQuantidade.setBounds(700, 250, 100, 25);
        lbUnidade.setBounds(35, 325, 100, 25);
        tfUnidade.setBounds(105, 325, 100, 25);
        lbDescricao_unidade.setBounds(35, 350, 400, 25);
        lbPreco_venda.setBounds(400, 325, 150, 25);
        tfPreco_venda.setBounds(520, 325, 150, 25);
        lbPreco_ultima_compra.setBounds(35, 400, 250, 25);
        tfPreco_ultima_compra.setBounds(245, 400, 150, 25);
        lbData_cadastro.setBounds(435, 400, 150, 25);
        tfData_cadastro.setBounds(600, 400, 225, 25);
        
        btNovo.setBounds     (45, 550, 75, 75);
        btLocalizar.setBounds(145, 550, 75, 75);
        btGravar.setBounds   (245, 550, 75, 75);
        btAlterar.setBounds  (345, 550, 75, 75);
        btExcluir.setBounds  (445, 550, 75, 75);
        btCancelar.setBounds (545, 550, 75, 75);
        btSair.setBounds     (645, 550, 75, 75);
        //lbLargura.setBounds  (745, 550, 75, 75);
        //lbAltura.setBounds   (845, 550, 75, 75);
        
        btCadForProduto.setBounds(35, 475, 270, 50);
        
        add(lbCad_pro);
        
        add(lbId);
        add(tfId);
        add(lbDescricao);
        add(tfDescricao);
        add(lbCategoria);
        add(tfCategoria);
        add(lbDescricao_categoria);
        add(lbQuantidade);
        add(tfQuantidade);
        add(lbUnidade);
        add(tfUnidade); 
        add(lbDescricao_unidade);
        add(lbPreco_venda);
        add(tfPreco_venda);
        add(lbPreco_ultima_compra);
        add(tfPreco_ultima_compra);
        add(lbData_cadastro);
        add(tfData_cadastro);
        
        //add(lbLargura);
        //add(lbAltura);
        
        add(btNovo);
        add(btLocalizar);
        add(btGravar);
        add(btAlterar);
        add(btExcluir);
        add(btCancelar);
        add(btSair);
        
        add(btCadForProduto);
        
        ativaBotaoCampoTF(false);
        setBotoes(true, true, false, false, false, false);
        produtos = new ProDAO();
        categorias = new CatDAO();
        unidades = new UnidadesDAO();
         
    }
    
    public void definirEventos() {
        
        btCadForProduto.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                GuiCadForProduto jFrame2 = new GuiCadForProduto()
                jFrame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                jFrame2.setVisible(true);
            }
        });
        
        tfId.addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {
                if(inclusao == true) {
                    produtos.produto.setId(tfId.getText());
                    if(produtos.localizar()) {
                        JOptionPane.showMessageDialog(null, "Produto já cadastrado!");
                        tfId.requestFocus();
                    }
                }
                return;
            }
        });
            
        tfCategoria.addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {
                categorias.categoria.setId(tfCategoria.getText());
                if(!categorias.localizar()) {
                    JOptionPane.showMessageDialog(null, "Categoria não cadastrada!");
                    tfCategoria.requestFocus();
                } else {
                    lbDescricao_categoria.setText("Descrição da Categoria: " + 
                            categorias.categoria.getDescricao());
                    tfUnidade.requestFocus();
                }
                return;
            }
        });
        
        tfUnidade.addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {
                unidades.unidade.setId(tfUnidade.getText());
                if(!unidades.localizar()) {
                    JOptionPane.showMessageDialog(null, "Unidade não cadastrada!");
                    tfUnidade.requestFocus();
                } else {
                    lbDescricao_unidade.setText("Unidade: " + 
                            unidades.unidade.getDescricao());
                    tfPreco_venda.requestFocus();
                }
                return;
            }
        });
        
        btSair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                GuiMenuPrincipal.liberaMenu();
                BD.getInstance().close();
                setVisible(false);
            }
        });
        
        btNovo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ativaBotaoCampoTF(true);
                inclusao = true;
                limparCampos();
                setBotoes(false, false, true, false, false, true);
                tfId.requestFocus();
            }
        });
        
        btCancelar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ativaBotaoCampoTF(false);
                inclusao = false;
                limparCampos();
            }
        });
        
        btGravar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                
                if(tfId.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "Código do produto não pode ser vazio!");
                    tfId.requestFocus();
                    return;
                } 
                
                if(tfDescricao.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "Descrição do Produto não pode ser vazia!");
                    tfDescricao.requestFocus();
                    return;
                }
                
                if(tfCategoria.equals("")) {
                    JOptionPane.showMessageDialog(null, "Categoria do produto não pode ser vazia!");
                    tfCategoria.requestFocus();
                    return;
                }
                
                if(tfUnidade.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "A unidade não pode estar vazia!");
                    tfUnidade.requestFocus();
                    return;
                }
                
                try {
                    Double numero = Double.parseDouble(tfPreco_venda.getText());
                } catch (Exception erro) {
                    JOptionPane.showMessageDialog(null, "O preço contém caracteres invalidos!");
                    tfQuantidade.requestFocus();
                    return;
                }
                
                
                if(tfData_cadastro.getText().equals("")) {
                    JOptionPane.showMessageDialog(null, "A data de cadastro não pode ser vazia");
                    tfData_cadastro.requestFocus();
                    return;
                }
                
                produtos.produto.setId(tfId.getText());
                produtos.produto.setDescricao(tfDescricao.getText());
                produtos.produto.setCategoria(tfCategoria.getText());
                produtos.produto.setQuantidade(util.spaceToDouble(tfQuantidade.getText()));
                produtos.produto.setUnidade(tfUnidade.getText());
                produtos.produto.setPreco_venda(Double.parseDouble(tfPreco_venda.getText()));
                produtos.produto.setPreco_ultima_compra(util.spaceToDouble(tfPreco_ultima_compra.getText()));
                produtos.produto.setData_cadastro(tfData_cadastro.getText());
                
                JOptionPane.showMessageDialog(null, produtos.atualizar(ProDAO.INCLUSAO));
                limparCampos();
                ativaBotaoCampoTF(false);
                inclusao = false;
            }
        });
        
        btAlterar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                produtos.produto.setId(tfId.getText());
                produtos.produto.setDescricao(tfDescricao.getText());
                produtos.produto.setCategoria(tfCategoria.getText());
                produtos.produto.setQuantidade(util.spaceToDouble(tfQuantidade.getText()));
                produtos.produto.setUnidade(tfUnidade.getText());
                produtos.produto.setPreco_venda(Double.parseDouble(tfPreco_venda.getText()));
                produtos.produto.setPreco_ultima_compra(util.spaceToDouble(tfPreco_ultima_compra.getText()));
                produtos.produto.setPreco_ultima_compra(0.00);
                produtos.produto.setData_cadastro(tfData_cadastro.getText());
                JOptionPane.showMessageDialog(null, produtos.atualizar(ProDAO.ALTERACAO));
                limparCampos();
                ativaBotaoCampoTF(false);
            }
        });
        
        btExcluir.addActionListener(new ActionListener(){ 
            public void actionPerformed(ActionEvent e) {
                produtos.produto.setId(tfId.getText());
                produtos.localizar();
                int n = JOptionPane.showConfirmDialog(null, produtos.produto.getDescricao(),
                        " Excluir o produto? ", JOptionPane.YES_NO_OPTION);
                if(n == JOptionPane.YES_OPTION) {
                    JOptionPane.showMessageDialog(null, produtos.atualizar(ProDAO.EXCLUSAO));
                    limparCampos();
                    ativaBotaoCampoTF(false);
                }
            }
        });
        
        btLocalizar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                atualizarCampos();
            }
        });
        
    }
    
    public void limparCampos() {
        
        tfId.setText("");
        tfDescricao.setText("");
        tfCategoria.setText("");
        lbDescricao_categoria.setText("Descrição da Categoria: ");
        tfQuantidade.setText("");
        tfUnidade.setText("");
        lbDescricao_unidade.setText("Unidade: ");
        tfPreco_venda.setText("");
        tfPreco_ultima_compra.setText("");
        tfData_cadastro.setText(formatoData.format(nova_data.getTime()));
        setBotoes(true, true, false, false, false, false);
    }
    
    public void atualizarCampos() {
        produtos.produto.setId(tfId.getText());
        if(produtos.localizar()) {
            categorias.categoria.setId(produtos.produto.getCategoria());
            if(categorias.localizar()) {
                    lbDescricao_categoria.setText("Descrição da Categoria: " + 
                            categorias.categoria.getDescricao());
            } else {
                    lbDescricao_categoria.setText("Descrição da Categoria: Não cadastrada");
            }
            tfId.setText(produtos.produto.getId());
            tfDescricao.setText(produtos.produto.getDescricao());
            tfCategoria.setText(produtos.produto.getCategoria());
            tfQuantidade.setText(produtos.produto.getQuantidade().toString());
            tfUnidade.setText(produtos.produto.getUnidade());
            unidades.unidade.setId(tfUnidade.getText());
            if(unidades.localizar()) {
                    lbDescricao_unidade.setText("Unidade: " + 
                            unidades.unidade.getDescricao());
            } else {
                    lbDescricao_unidade.setText("Unidade: Não cadastrada");
            }
            tfPreco_venda.setText(produtos.produto.getPreco_venda().toString());
            tfPreco_ultima_compra.setText(produtos.produto.getPreco_ultima_compra().toString());
            tfData_cadastro.setText(produtos.produto.getData_cadastro());
            setBotoes(true, true, false, true, true, true);
            ativaBotaoCampoTF(true);
        } else {
            JOptionPane.showMessageDialog(null, "Produto não encontrado! " + produtos.produto.getId());
            limparCampos();
            ativaBotaoCampoTF(false);
        }
    }
    
    public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
            boolean bAlterar, boolean bExcluir, boolean bCancelar) {
        btNovo.setEnabled(bNovo);
        btLocalizar.setEnabled(bLocalizar);
        btGravar.setEnabled(bGravar);
        btAlterar.setEnabled(bAlterar);
        btExcluir.setEnabled(bExcluir);
        btCancelar.setEnabled(bCancelar);
    }
    
    private void ativaBotaoCampoTF(boolean ativa) {
        btCadForProduto.setEnabled(ativa);
        // tfId.setEnabled(ativa);
        tfDescricao.setEnabled(ativa);
        tfCategoria.setEnabled(ativa);
        tfQuantidade.setEditable(false);
        tfUnidade.setEnabled(ativa);
        tfPreco_venda.setEnabled(ativa);
        tfPreco_ultima_compra.setEditable(false);
        tfData_cadastro.setEnabled(ativa);
    }    
    
}

/*
Table: produtos
Columns:
id varchar(10) PK 
descricao varchar(60) 
categoria varchar(10) 
quantidade double 
unidade varchar(10) 
preco_venda double 
preco_ultima_compra double 
data_cadastro datetime
*/

Veja as telas dos programas:

Eu tentei por o código das duas classes mas o arquivo fica muito grande e o guj não permite. Por favor qualquer dúvida entre em contato. O identificador que desejo passar para a outra classe que é um JFrame é o identificador tfId (JTextField). É para constar no campo não editável que está como Codigo de Produto.

Atenciosamente,
Ronaldo

7 Respostas

rodriguesabner

pode sobrecarregar a outra classe.

public class ClasseDois {
    private String nome;

    public ClasseDois(String nome){
       this.nome = nome;
    }

    ....
}

Aí na classe1, vc chama assim:

new ClasseDois("Meu nome é Abner");
anyblueangel3

Já tinha tentado assim mas vou tentar de novo, obrigado.

Ronaldo

rodriguesabner

Ok, avise se não conseguir

staroski

Quer enviar a String de um programa para outro ou de um objeto para outro?
São coisas bastante diferentes de se implementar.

anyblueangel3

Staroski, não deixo muito claro o que são dois programas e o que são duas classes. Enfim, são dois arquivos java então eu coloquei passa o código do produto de um programa java para outro, mas eles rodam juntos, desta forma podemos dizer que quero passar o código do produto de uma classe JPanel para um classe em um nível abaixo desta que é JFrame. Neste aplicativo que estou estudando/trabalhando por enquanto só tenho duas classes JFrame, a tela de abertura e esse JFrame que abre uma janela sob a demanda de uma classe JPanel.
Estou falando demais porque deve ser uma coisa simples: quero ter acesso a um identificador JTextField que guarda um código na classe em um nível abaixo, ou seja, criada pela classe JPanel. E essa classe é um extend JFrame. Eu não entendo porque o programa da erro quando faço do jeito que o rodriguesabner falou. Vou tentar de novo e mandar o erro para vocês.

staroski

Você quer trocar mensagens entre duas classes, não entre dois programas.
Se fossem 2 programas, você estaria rodando duas instâncias da máquina virtual e teria 2 process IDs diferentes no seu sistema operacional.

Você simplesmente quer trocar mensagens entre objetos de duas classes: GuiCadastroProdutos e GuiCadForProduto.

Assumindo que o código do seu produto é do tipo String, basta você criar um método na classe GuiCadForProduto para receber esse código:

public void setCodigoProduto(String codigo) {
    // aqui você processa o código recebido por parâmetro
}

Mas assim, precisa realmente enviar apenas o código?
Não é mais prático enviar o próprio objeto do tipo Produto?

E eu não entendo porque você não posta o código que você diz ter feito igual o colega @rodriguesabner falou.

Ainda acho que você não entendeu a diferença entre um programa, uma classe e um objeto, no passado você já teve esse mesmo tipo de dúvida, parece que ainda não compreendeu como funciona uma troca de mensagens entre objetos.

anyblueangel3

Deu certo da segunda vez, tinha algo errado mas você deu uma idéia boa. Vou passar o objeto, mesmo porque vou precisar dos dados do produto.

Obrigadão,
Ronaldo

Criado 19 de março de 2022
Ultima resposta 21 de mar. de 2022
Respostas 7
Participantes 3