Como transferir um código string para um programa filho

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

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");
1 curtida

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

Ronaldo

Ok, avise se não conseguir

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

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.

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.

1 curtida

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