[Resolvido] Transferir dados de um Jtable de um Jdialog para o Jtable de um JFrame

33 respostas Resolvido
SergioLucas

Prezados, Boa noite.
Estou com dificuldades para passar a linha selecionada da Jtable01 (Jframe 01) para Jtable02 (Jframe 02) .
o meu Jfamre 02 faz uma pesquisa por produtos, ao clicar no produto e pressionar o botão adicionar item, o documento simplesmente não vai para a Jtable02.
Segue Abaixo meu Código:

DefaultTableModel m;

private void bntAddItemActionPerformed(java.awt.event.ActionEvent evt) {

int fsel = jtPesqProd.getSelectedRow();
try {
       String idProd, nomeProd, pesoProd, valorProd, estoque, qtdProd, importar;
       Double valor;
       
       if(fsel == -1){
           
           JOptionPane.showMessageDialog(null, "Você deve Selecionar um Produto","Advertência",JOptionPane.WARNING_MESSAGE);
       }else{
           
           m = (DefaultTableModel)jtPesqProd.getModel();
           TelaInicialVendas tela = new TelaInicialVendas();
           idProd = jtPesqProd.getValueAt(fsel, 0).toString();
           nomeProd = jtPesqProd.getValueAt(fsel, 1).toString();
           pesoProd = jtPesqProd.getValueAt(fsel, 2).toString();
           valorProd = jtPesqProd.getValueAt(fsel, 3).toString();
           estoque = jtPesqProd.getValueAt(fsel, 4).toString();

           String[] transfer = new String[5];

           transfer[0] = (String) tela.jtItensVenda.getValueAt(fsel, 0);
           transfer[1] = (String) tela.jtItensVenda.getValueAt(fsel, 1);
           transfer[2] = (String) tela.jtItensVenda.getValueAt(fsel, 2);
           transfer[3] = (String) tela.jtItensVenda.getValueAt(fsel, 3);
           transfer[4] = (String) tela.jtItensVenda.getValueAt(fsel, 4);
           
           
          
           m = (DefaultTableModel)tela.jtItensVenda.getModel();
           m.addRow(transfer);
       
           
           
                             }
        
    } catch (Exception e) {
    }

    // TODO add your handling code here:
}

Agradeço todos que puderem me ajudar, ele mostra a mensagem quando nenhum é selecionado, também coloquei um Joption pane para exibir os dados se estão sendo transferidos e são exibidos as linhas, porém não é exibida na outra tabela.

33 Respostas

D

O código está meio confuso, separe por métodos:

private String[] obterLinha(int indice, DefaultTableModel model) {
    String[] linha = new String[5];
    linha[0] = model.getValueAt(indice, 0).toString();
    linha[1] = model.getValueAt(indice, 1).toString();
    linha[2] = model.getValueAt(indice, 2).toString();
    linha[3] = model.getValueAt(indice, 3).toString();
    linha[4] = model.getValueAt(indice, 4).toString();
    return linha;
}

private void adicionarLinha(String[] linha, DefaultTableModel model) {
    model.addRow(linha);
}

e depois:

try {
   // String idProd, nomeProd, pesoProd, valorProd, estoque, qtdProd, importar;
   // Double valor;
   if(fsel == -1){           
       JOptionPane.showMessageDialog(null, "Você deve Selecionar um Produto","Advertência",JOptionPane.WARNING_MESSAGE);
   }else{
       String[] linha = obterLinha(sel, (DefaultTableModel)jtPesqProd.getModel());
       TelaInicialVendas tela = new TelaInicialVendas();
       adicionarLinha(linha, (DefaultTableModel)(tela.jtItensVenda.getModel()));
SergioLucas

Olá diego! Eu fiz dessa forma e não funcionou.
lembrando que coloquei todo esse código nao Jframe TelaPesquisaVendas, que é a responsável por fazer a pesquisa no banco jogar no Jtable (jtPesqProd) e em seguida após selecionar a linha e clicar no botão (Adicionar item) ele teria que enviar para o Jframe TelaInicialVendas na Jtable(jtItensVenda).
Já coloquei a Jtable em Public porém mesmo assim não foi, não sei porque não está querendo adicionar o item é como se ele estivesse indo, porém não está sendo exibido.

darlan_machado

Você precisa estudar o pattern observable.
Ou, de outra forma, fazer com que o construtor da JFrame que receberá os dados, receba os tais dados como parâmetro

public MeuJFrameQueRecebeOsDados(List<Dado> dados) {
    this.dados = dados;
}

Entendeu?

D

Aparentemente o problema não está aí, poderia fazer o seguinte teste:

tela.jtItensVenda.setModel(jtPesqProd.getModel());

Isso fará com que as tabelas sejam exibidas igualmente, inclusive nas edições. Se não funcionar então em algum lugar vc está trocando o model da tabela ou está chamando a tabela errada.

SergioLucas

fiz como pediu, mas não funcionou, coloquei esse código na Jframe (Tela pesquisa produtos) e também coloquei lá no Jframe (Tela Inicial Vendas) em ambos os casos não funcionou.
Ops, isso se deve ao fato de a tabela pesquisa está em um Jdialog? esqueci de mencionar isso.
é o seguinte, ao abrir o Jframe de vendas, eu pesquiso o produto pressionando a Tecla F1, onde é chamado o Jdialog eu consulto e ao receber do banco os produtos eu tento selecionar para jogar na tabela do JFrame será esse o problema? eu coloquei esse código também na ação do botão F1, mas não resolveu.

SergioLucas

Certo Darlan, irei estudar conforme mencionou.

SergioLucas

Cara não sei onde estou errando, será pelo fato de eu utilizar o DefaultTableModel?
já tentei fazer de várias formas, mas os dados não passam de jeito nenhum, vou tentar jogar em um JtextField dessa outra tabela para ver se funciona.

SergioLucas

Estou percebendo uma coisa, estou colocando todo o código no evento do botão, mas em nenhum momento eu coloquei no código evento para o click do mouse na tabela, será que é isso?
mas na condicional eu deixo claro que se não tiver nada selecionado ele informe, mas quando eu seleciono eu clico e simplesmente ele não faz nada.

SergioLucas

Testei se ele estava pegando os dados da tabela, está pegando sim, joguei em um Joption Pane e o resultado selecionado estava sendo exibido no Joption pane, isso quer dizer ele a seleção do click do mouse está sendo realizada, de alguma forma não está sendo possível inserir e minha outra tabela, já exclui e coloquei outra tabela, mas o addRow não está funcionando aparentemente, é como se ele não estivesse chegando na outra Jframe ou simplesmente a tabela não está atualizando.

Preciso de um Help!

darlan_machado

Não, se consegue acesso aos dados, não é esse o problema.

SergioLucas

e qual seria então o problema? me parece ser algo simples… mas não estou conseguindo entender o que está errado!

D

Se for um dialog modal faz toda a diferença. Quando é modal e o dialog é exibido, o dialog “trava” a execução e só continua depois que for fechada.

Inicialize o TelaInicialVendas como setModal(false) e setVisible(false) no construtor, depois que instanciar chame o método exibir da classe TelaInicialVendas:

TelaInicialVendas tela = new TelaInicialVendas();
/* transfere */
tela.exibir();

// método exibir da classe TelaInicialVendas

public void exibir() {
    setModal(true);
    setVisible(true);
}

Sendo JFrame ou JDialog, não é muito bom colocar o setVisible(true) no construtor, pois muitas vezes é melhor inserir os dados antes de abrir as janelas.

SergioLucas

diego12, quando inicio o Jframe TelaInicialVendas, eu devo colocar ele setModal? o setModal não é para o Jdialog, que nesse caso é o TelaPesquisaVendas, pois quando eu abro a tela de vendas eu pressiono “F1” para consultar o produto, logo abre o Tela de Pesquisa que é o Jdialog, eu coloquei modal para que o usuário não possa fazer nenhum ação no Frame enquanto estiver aberta a Tela de pesquisa. o Código da ação na Tela pesquisa está assim:

<a class="mention" href="/u/override">@Override</a>

public void actionPerformed(ActionEvent ae) {

switch(tecla){

case “F1”:

{
TelaPesquisaVendas telapesq = new TelaPesquisaVendas((Frame)getParent(), true);
              telapesq.setVisible(true);
              telapesq.setModal(true);
                               
           }
       }  

    
    }

Nesse caso quando tento criar o metódo exibir o setModal(true) fica com erro “cannot find Symbol”, não sendo possível escrever ele ai. logo não posso colocar no inicialize o tela. exibir. A TelaInicialVendas está assim:

public TelaInicialVendas() {

initComponents();

RegistrarAcaoBotao(jPanel1);

TelaInicialVendas tela = new TelaInicialVendas();

tela.exibir();

}
public void exibir(){
    setModal(true);
    setVisible(true);
}

Nesse caso eu teria que armazenar os campos em algum lugar temporário até que o Jdialog seja encerrado, após isso inserir na outra tabela? é mais ou menos isso?

SergioLucas

Eu fiz o teste colocando o telapesq.setModal(false) e o ((Frame)getParent(), false), mesmo assim os dados não são adicionados.

D

Me enganei, pensei que fosse a TelaInicialVendas o dialog, pois geralmente as pessoas fazem o JFrame abrir um JDialog e não o inverso, testei aqui e não é isso também. Desculpa, ainda não sei o que pode ser.

O experimento:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
import java.awt.BorderLayout;
import javax.swing.event.*;
public class Janela1 extends JDialog
{
    JTable tabela;
    
    public Janela1() {
        super();setModal(true);
        setTitle("dialog");
        
        Janela2 outra = new Janela2();
        
        tabela = new JTable(new DefaultTableModel(new String[]{"Nome", "Valor"}, 0));
        tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        tabela.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                 String[] linha = obterLinha(e.getFirstIndex(), (DefaultTableModel)tabela.getModel());
                 adicionarLinha(linha, (DefaultTableModel)outra.tabela.getModel());
            }
        });
        
        

        outra.setVisible(true);
        
        getContentPane().add(new JScrollPane(tabela));
        //setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        
        /** TESTE **/
        DefaultTableModel model = (DefaultTableModel)tabela.getModel();
        adicionarLinha(new String[]{"Item 1", "5.00"}, model);
        adicionarLinha(new String[]{"Item 2", "4.00"}, model);
        adicionarLinha(new String[]{"Item 3", "2.00"}, model);
        adicionarLinha(new String[]{"Item 4", "1.00"}, model);
    }
    
    private String[] obterLinha(int indice, DefaultTableModel model) {
        String[] linha = new String[5];
        linha[0] = model.getValueAt(indice, 0).toString();
        linha[1] = model.getValueAt(indice, 1).toString();
        return linha;
    }

    private void adicionarLinha(String[] linha, DefaultTableModel model) {
        model.addRow(linha);
    }
    
    public static void main(String[] args){
        new Janela1().setVisible(true);
    }
}


import javax.swing.*;
import javax.swing.table.*;
import java.awt.BorderLayout;
import javax.swing.event.*;
public class Janela2 extends JFrame
{
    JTable tabela;
    JButton botao;
    
    public Janela2() {
        super();
        setTitle("frame");
        tabela = new JTable(new DefaultTableModel(new String[]{"Nome", "Valor"}, 0));
        
        getContentPane().add(new JScrollPane(tabela));
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
    }
}
SergioLucas

@diego12
Então teria que ao invés de ser um Jdialog chamar o Jframe mesmo. Eu coloquei o Jdialog para que justamente a tela de pesquisa ficasse evidente e o usuário não pudesse utilizar a outra enquanto esta estiver aberta.
Não sei se é o certo, mas poderia pegar os dados colocar em um Vector, são 5 campos que precisam ser exibidos, eu colocaria em um método para transferir esses dados para o outro Frame e lá faria uma forma de executá-lo, me parece uma POG… mas não vejo outra alternativa.
é mais ou menos, eu acho, o que o @darlan_machado mencionou anteriormente em um dos posts.

D

Então quem seria o observador e o observado? Se souber a resposta então é possível usar o padrão

Passar uma lista dos dados pelo construtor pode até funcionar, seria muito parecido com que vc já tinha feito, mas terá que bloquear o botão para impedir que abra outra janela, e caso clique no botão novamente, terá que fechar a janela e para abrir a outra ou resetar a janela (limpar os dados e preencher novamente).

Poderia postar o código da tela TelaInicialVendas, pelo menos o construtor?

SergioLucas

@diego12 Segue meu Jframe

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package telas;
import java.awt.Frame;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;

import javax.swing.ActionMap;

import javax.swing.InputMap;

import javax.swing.JDialog;

import javax.swing.JPanel;

import javax.swing.KeyStroke;

import javax.swing.table.*;

import telas.TelaPesquisaVendas;

/**
*

  • @author Grupo Logica
    */
    public class TelaInicialVendas extends javax.swing.JFrame {

    private AcaoBotao botaoF1 = new AcaoBotao(“F1”);

    /**

    • Creates new form TelaInicialVendas
      */
      public TelaInicialVendas() {
      initComponents();
      RegistrarAcaoBotao(jPanel1);
      // TelaInicialVendas tela = new TelaInicialVendas();
      //tela.exibir();
      }

    public void exibir() {

    //setModal(true);
     //setVisible(true);
    

    }

    private class AcaoBotao extends AbstractAction {

    private String tecla;
    
     public AcaoBotao(String tecla) {
         super(tecla);
         this.tecla = tecla;
     }
    
     @Override
     public void actionPerformed(ActionEvent ae) {
         switch (tecla) {
             case "F1": {
    
                 TelaPesquisaVendas telapesq = new TelaPesquisaVendas((Frame) getParent(), true);
                 telapesq.setVisible(true);
                 telapesq.setModal(true);
    
             }
         }
    
         //To change body of generated methods, choose Tools | Templates.
     }
    

    }

    private void RegistrarAcaoBotao(javax.swing.JPanel panel) {

    ActionMap actionmap = panel.getActionMap();
     actionmap.put("F1", botaoF1);
     panel.setActionMap(actionmap);
    
     InputMap inputmap = panel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
    
     inputmap.put(KeyStroke.getKeyStroke("F1"), "F1");
    

    }

    /**

    • This method is called from within the constructor to initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is always

    • regenerated by the Form Editor.
      
      */
      
      @SuppressWarnings(unchecked)
      
      // 
      
      private void initComponents() {
      
      jPanel1 = new javax.swing.JPanel();
      
      jPanel2 = new javax.swing.JPanel();
      
      jTextField2 = new javax.swing.JTextField();
      
      jLabel2 = new javax.swing.JLabel();
      
      jLabel7 = new javax.swing.JLabel();
      
      jTextField6 = new javax.swing.JTextField();
      
      jPanel3 = new javax.swing.JPanel();
      
      jLabel4 = new javax.swing.JLabel();
      
      jLabel6 = new javax.swing.JLabel();
      
      jLabel8 = new javax.swing.JLabel();
      
      jLabel9 = new javax.swing.JLabel();
      
      jLabel10 = new javax.swing.JLabel();
      
      jLabel11 = new javax.swing.JLabel();
      
      jTextField3 = new javax.swing.JTextField();
      
      jLabel12 = new javax.swing.JLabel();
      
      jTextField4 = new javax.swing.JTextField();
      
      jLabel13 = new javax.swing.JLabel();
      
      jTextField8 = new javax.swing.JTextField();
      
      jLabel14 = new javax.swing.JLabel();
      
      jTextField9 = new javax.swing.JTextField();
      
      jLabel15 = new javax.swing.JLabel();
      
      jTextField10 = new javax.swing.JTextField();
      
      jButton1 = new javax.swing.JButton();
      
      jButton2 = new javax.swing.JButton();
      
      jButton3 = new javax.swing.JButton();
      
      jPanel4 = new javax.swing.JPanel();
      
      jPanel5 = new javax.swing.JPanel();
      
      jButton5 = new javax.swing.JButton();
      
      jButton6 = new javax.swing.JButton();
      
      jLabel5 = new javax.swing.JLabel();
      
      txtSubTotal = new javax.swing.JTextField();
      
      jLabel1 = new javax.swing.JLabel();
      
      txtDesconto = new javax.swing.JTextField();
      
      jLabel3 = new javax.swing.JLabel();
      
      txtTotal = new javax.swing.JTextField();
      
      jScrollPane2 = new javax.swing.JScrollPane();
      
      jtItensVenda = new javax.swing.JTable();
      

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(“Dados da Venda”));
      jPanel2.setToolTipText("");

      jTextField2.setFont(new java.awt.Font(“Tahoma”, 0, 18)); // NOI18N

      jLabel2.setFont(new java.awt.Font(“Tahoma”, 0, 18)); // NOI18N
      jLabel2.setText(“Produto”);

      jLabel7.setFont(new java.awt.Font(“Tahoma”, 0, 18)); // NOI18N
      jLabel7.setText(“Data”);

      jLabel4.setText("ATALHOS ");

      jLabel6.setText(“F1 - Consultar Produtos”);

      jLabel8.setText(“F2 - Descontos”);

      jLabel9.setText(“F3 - Cancelar Venda”);

      jLabel10.setText(“F4 - Finalizar Venda”);

      javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
      
      jPanel3.setLayout(jPanel3Layout);
      
      jPanel3Layout.setHorizontalGroup(
      
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addGap(48, 48, 48)
      
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addComponent(jLabel8)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jLabel10))
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addComponent(jLabel6)
      
      .addGap(72, 72, 72)
      
      .addComponent(jLabel9)))
      
      .addContainerGap(33, Short.MAX_VALUE))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
      
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jLabel4)
      
      .addGap(156, 156, 156))
      
      );
      
      jPanel3Layout.setVerticalGroup(
      
      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel3Layout.createSequentialGroup()
      
      .addComponent(jLabel4)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel6)
      
      .addComponent(jLabel9))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel8)
      
      .addComponent(jLabel10))
      
      .addGap(0, 41, Short.MAX_VALUE))
      
      );
      

      jLabel11.setText(“ID Produto”);

      jLabel12.setText(“Peso”);

      jLabel13.setText(“Estoque”);

      jLabel14.setText(“Valor Unid”);

      jLabel15.setText(“Quantidade”);

      jButton1.setText(“Adicionar Item”);

      jButton2.setText(“Remover Item”);

      jButton3.setText(“Alterar Item”);

      javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
      
      jPanel2.setLayout(jPanel2Layout);
      
      jPanel2Layout.setHorizontalGroup(
      
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      
      .addComponent(jLabel15)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGap(20, 20, 20)
      
      .addComponent(jLabel11))
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel2))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel12))))
      
      .addGap(18, 18, 18)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addComponent(jLabel13)
      
      .addGap(12, 12, 12)
      
      .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(24, 24, 24)
      
      .addComponent(jLabel14)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addComponent(jTextField9, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGap(21, 21, 21)
      
      .addComponent(jButton1)
      
      .addGap(32, 32, 32)
      
      .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(39, 39, 39)
      
      .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)))
      
      .addContainerGap())
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jLabel7)
      
      .addGap(34, 34, 34)
      
      .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 657, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 279, Short.MAX_VALUE)
      
      .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
      
      );
      
      jPanel2Layout.setVerticalGroup(
      
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(18, 18, Short.MAX_VALUE))
      
      .addGroup(jPanel2Layout.createSequentialGroup()
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel11)
      
      .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jLabel7)
      
      .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGap(18, 18, 18)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel2)
      
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGap(18, 18, 18)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel12)
      
      .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jLabel13)
      
      .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jLabel14)
      
      .addComponent(jTextField9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGap(18, 18, 18)
      
      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel15)
      
      .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jButton1)
      
      .addComponent(jButton3)
      
      .addComponent(jButton2))
      
      .addGap(88, 88, 88))))
      
      );
      

      jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(“Itens de Venda”));

      jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jButton5.setText(“Finalizar Venda”);

      jButton6.setText(“Cancelar Venda”);

      javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
      
      jPanel5.setLayout(jPanel5Layout);
      
      jPanel5Layout.setHorizontalGroup(
      
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
      
      .addGap(58, 58, 58)
      
      .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 208, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(42, 42, 42)
      
      .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(899, Short.MAX_VALUE))
      
      );
      
      jPanel5Layout.setVerticalGroup(
      
      jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel5Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      );
      

      jLabel5.setFont(new java.awt.Font(“Tahoma”, 0, 24)); // NOI18N
      jLabel5.setText(“SUB TOTAL”);

      jLabel1.setFont(new java.awt.Font(“Tahoma”, 0, 24)); // NOI18N
      jLabel1.setText(“DESCONTO”);

      jLabel3.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N
      jLabel3.setText(“TOTAL”);

      jtItensVenda.setModel(new javax.swing.table.DefaultTableModel(
      
      new Object [][] {
      
      {},
      
      {},
      
      {},
      
      {}
      
      },
      
      new String [] {
      
      }
      
      ));
      
      jtItensVenda.getTableHeader().setReorderingAllowed(false);
      
      jScrollPane2.setViewportView(jtItensVenda);
      
      javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
      
      jPanel4.setLayout(jPanel4Layout);
      
      jPanel4Layout.setHorizontalGroup(
      
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addGroup(jPanel4Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 1016, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createSequentialGroup()
      
      .addGap(128, 128, 128)
      
      .addComponent(jLabel5)
      
      .addGap(106, 106, 106))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      
      .addComponent(txtDesconto, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addComponent(txtSubTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addGap(59, 59, 59)))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addComponent(jLabel1)
      
      .addGap(110, 110, 110)))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addComponent(jLabel3)
      
      .addGap(108, 108, 108)))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addComponent(txtTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(19, 19, 19))))
      
      );
      
      jPanel4Layout.setVerticalGroup(
      
      jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel4Layout.createSequentialGroup()
      
      .addComponent(jLabel5)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addComponent(txtSubTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(18, 18, 18)
      
      .addComponent(jLabel1)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      
      .addComponent(txtDesconto, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(18, 18, 18)
      
      .addComponent(jLabel3)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addComponent(txtTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(88, 88, 88))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
      
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(18, 18, 18)))
      
      .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      );
      
      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      
      jPanel1.setLayout(jPanel1Layout);
      
      jPanel1Layout.setHorizontalGroup(
      
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel1Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      .addContainerGap())
      
      );
      
      jPanel1Layout.setVerticalGroup(
      
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(jPanel1Layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      
      .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 522, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap())
      
      );
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      
      );
      

      pack();
      }//

    /**

    • @param args the command line arguments
      /
      public static void main(String args[]) {
      /
      Set the Nimbus look and feel /
      //
      /
      If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

      • For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if (“Nimbus”.equals(info.getName())) {
        javax.swing.UIManager.setLookAndFeel(info.getClassName());
        break;
        }
        }
        } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TelaInicialVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TelaInicialVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TelaInicialVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TelaInicialVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //
      /* Create and display the form */
      
      java.awt.EventQueue.invokeLater(new Runnable() {
      
      public void run() {
      
      new TelaInicialVendas().setVisible(true);
      
      }
      
      });
      
      }
      
    // Variables declaration - do not modify
    
    private javax.swing.JButton jButton1;
    
    private javax.swing.JButton jButton2;
    
    private javax.swing.JButton jButton3;
    
    private javax.swing.JButton jButton5;
    
    private javax.swing.JButton jButton6;
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JLabel jLabel10;
    
    private javax.swing.JLabel jLabel11;
    
    private javax.swing.JLabel jLabel12;
    
    private javax.swing.JLabel jLabel13;
    
    private javax.swing.JLabel jLabel14;
    
    private javax.swing.JLabel jLabel15;
    
    private javax.swing.JLabel jLabel2;
    
    private javax.swing.JLabel jLabel3;
    
    private javax.swing.JLabel jLabel4;
    
    private javax.swing.JLabel jLabel5;
    
    private javax.swing.JLabel jLabel6;
    
    private javax.swing.JLabel jLabel7;
    
    private javax.swing.JLabel jLabel8;
    
    private javax.swing.JLabel jLabel9;
    
    private javax.swing.JPanel jPanel1;
    
    private javax.swing.JPanel jPanel2;
    
    private javax.swing.JPanel jPanel3;
    
    private javax.swing.JPanel jPanel4;
    
    private javax.swing.JPanel jPanel5;
    
    private javax.swing.JScrollPane jScrollPane2;
    
    private javax.swing.JTextField jTextField10;
    
    private javax.swing.JTextField jTextField2;
    
    private javax.swing.JTextField jTextField3;
    
    private javax.swing.JTextField jTextField4;
    
    private javax.swing.JTextField jTextField6;
    
    private javax.swing.JTextField jTextField8;
    
    private javax.swing.JTextField jTextField9;
    
    public javax.swing.JTable jtItensVenda;
    
    private javax.swing.JTextField txtDesconto;
    
    private javax.swing.JTextField txtSubTotal;
    
    private javax.swing.JTextField txtTotal;
    
    // End of variables declaration
    
    }
    
D

Falha minha, confundi as janelas, é a TelaPesquisaVendas que queria, no poste anterior também tá errado:

Era a TelaPesquisaVendas. Desculpas.

Inicialize a TelaPesquisaVendas sem ser modal e sem exibir,

TelaPesquisaVendas telapesq = new TelaPesquisaVendas();
/* transfere */
String[] linha = obterLinha(jtItensVenda.getSelectedRow() , (DefaultTableModel)jtItensVenda.getModel());
adicionarLinha(linha, (DefaultTableModel)(telaesq.tabela.getModel())); // não sei o nome da variável da tabela

telapesq.setModal(true);
telapesq.setVisible(true);

e os métodos:

private String[] obterLinha(int indice, DefaultTableModel model) {
    String[] linha = new String[5];
    linha[0] = model.getValueAt(indice, 0).toString();
    linha[1] = model.getValueAt(indice, 1).toString();
    linha[2] = model.getValueAt(indice, 2).toString();
    linha[3] = model.getValueAt(indice, 3).toString();
    linha[4] = model.getValueAt(indice, 4).toString();
    return linha;
}

private void adicionarLinha(String[] linha, DefaultTableModel model) {
    model.addRow(linha);
}
D

Devo ter me confundido pois vc instanciou a TelaInicialVendas no botão no primeiro poste, acho que vc queria a TelaPesquisaVendas.

SergioLucas

@diego12 - Segue a TelaPesquisaProd , desculpe cheguei em casa agora…

package telas;

import dao.ProdutosDao;

import java.awt.Dimension;

import java.util.Vector;

import javax.sound.midi.Soundbank;

import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.SwingConstants;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.JTableHeader;

import javax.swing.table.TableColumnModel;

import telas.TelaInicialVendas;

/**
*

  • @author sergio.lucas
    */
    public class TelaPesquisaVendas extends javax.swing.JDialog {

    DefaultTableModel m;

    /**

    • Creates new form TelaPesquisaVendas
      */
      public TelaPesquisaVendas(java.awt.Frame parent, boolean modal) {
      super(parent, modal);
      initComponents();

    }

    private String[] obterLinha(int indice, DefaultTableModel model) {
    
    String[] linha = new String[5];
    
    linha[0] = model.getValueAt(indice, 0).toString();
    
    linha[1] = model.getValueAt(indice, 1).toString();
    
    linha[2] = model.getValueAt(indice, 2).toString();
    
    linha[3] = model.getValueAt(indice, 3).toString();
    
    linha[4] = model.getValueAt(indice, 4).toString();
    
    return linha;
    
    }
    
    private void adicionarLinha(String[] linha, DefaultTableModel model) {
    
    model.addRow(linha);
    
    }
    
    private void Ajustacoluna() {
    
    jtPesqProd.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    
    ((DefaultTableCellRenderer) jtPesqProd.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(SwingConstants.CENTER);
    
    DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
    
    DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
    
    DefaultTableCellRenderer direita = new DefaultTableCellRenderer();
    
    esquerda.setHorizontalAlignment(SwingConstants.LEFT);
    
    centralizado.setHorizontalAlignment(SwingConstants.CENTER);
    
    direita.setHorizontalAlignment(SwingConstants.RIGHT);
    
    jtPesqProd.getColumnModel().getColumn(0).setCellRenderer(centralizado);
    
    jtPesqProd.getColumnModel().getColumn(1).setCellRenderer(centralizado);
    
    jtPesqProd.getColumnModel().getColumn(2).setCellRenderer(centralizado);
    
    jtPesqProd.getColumnModel().getColumn(3).setCellRenderer(centralizado);
    
    jtPesqProd.getColumnModel().getColumn(4).setCellRenderer(centralizado);
    
    jtPesqProd.getColumnModel().getColumn(0).setPreferredWidth(60);
     jtPesqProd.getColumnModel().getColumn(1).setPreferredWidth(370);
     jtPesqProd.getColumnModel().getColumn(2).setPreferredWidth(55);
     jtPesqProd.getColumnModel().getColumn(3).setPreferredWidth(70);
     jtPesqProd.getColumnModel().getColumn(4).setPreferredWidth(70);
    

    }

    @SuppressWarnings("unchecked")
    

    //
    private void initComponents() {

    jtPesq = new javax.swing.JTextField();
     jLabel1 = new javax.swing.JLabel();
     jScrollPane1 = new javax.swing.JScrollPane();
     jtPesqProd = new javax.swing.JTable();
     jLabel3 = new javax.swing.JLabel();
     jLabel2 = new javax.swing.JLabel();
     txtQtdItem = new javax.swing.JTextField();
     jButton1 = new javax.swing.JButton();
     bntAddItem = new javax.swing.JButton();
    
     setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    
     jtPesq.setHorizontalAlignment(javax.swing.JTextField.CENTER);
     jtPesq.addKeyListener(new java.awt.event.KeyAdapter() {
         public void keyReleased(java.awt.event.KeyEvent evt) {
             jtPesqKeyReleased(evt);
         }
     });
    
     jLabel1.setText("BUSCAR");
    
     jtPesqProd.setModel(new javax.swing.table.DefaultTableModel(
         new Object [][] {
             {},
             {},
             {},
             {}
         },
         new String [] {
    
         }
     ));
     jScrollPane1.setViewportView(jtPesqProd);
    
     jLabel3.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
     jLabel3.setText("PESQUISA DE PRODUTOS");
    
     jLabel2.setText("QUANTIDADE");
    
     jButton1.setText("SAIR");
     jButton1.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             jButton1ActionPerformed(evt);
         }
     });
    
     bntAddItem.setText("Adicionar Item");
     bntAddItem.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
             bntAddItemActionPerformed(evt);
         }
     });
    
     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
     getContentPane().setLayout(layout);
     layout.setHorizontalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
             .addContainerGap()
             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 631, Short.MAX_VALUE)
             .addContainerGap())
         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
             .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
             .addComponent(jLabel1)
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
             .addComponent(jtPesq, javax.swing.GroupLayout.PREFERRED_SIZE, 501, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addGap(70, 70, 70))
         .addGroup(layout.createSequentialGroup()
             .addGap(184, 184, 184)
             .addComponent(jLabel3)
             .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         .addGroup(layout.createSequentialGroup()
             .addGap(20, 20, 20)
             .addComponent(jLabel2)
             .addGap(18, 18, 18)
             .addComponent(txtQtdItem, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
             .addComponent(bntAddItem, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addGap(64, 64, 64)
             .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addContainerGap())
     );
     layout.setVerticalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
             .addComponent(jLabel3)
             .addGap(29, 29, 29)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                 .addComponent(jtPesq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addComponent(jLabel1))
             .addGap(18, 18, 18)
             .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 338, javax.swing.GroupLayout.PREFERRED_SIZE)
             .addGap(18, 18, 18)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                 .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addComponent(txtQtdItem, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                 .addComponent(jLabel2)
                 .addComponent(bntAddItem, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE))
             .addContainerGap(20, Short.MAX_VALUE))
     );
    
     pack();
    

    }//

    private void jtPesqKeyReleased(java.awt.event.KeyEvent evt) {
    
    Vector cabecalho = new Vector();
    
    cabecalho.add("Código ");
    
    cabecalho.add(Descrição);
    
    cabecalho.add(Peso);
    
    cabecalho.add(Valor);
    
    cabecalho.add(Estoque);
    
    ProdutosDao dao = new ProdutosDao();
     if (!jtPesq.getText().equals("")) {
    
         DefaultTableModel dtm = new DefaultTableModel(dao.consultaProdutos(jtPesq.getText()), cabecalho);
         jtPesqProd.setModel(dtm);
         Ajustacoluna();
    
     } else {
         DefaultTableModel dtm = new DefaultTableModel(new Vector(), cabecalho);
         jtPesqProd.setModel(dtm);
         Ajustacoluna();
     }
    
     // TODO add your handling code here:
    

    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    this.dispose();
    
    // TODO add your handling code here:
    
    }
    
    private void bntAddItemActionPerformed(java.awt.event.ActionEvent evt) {
    
    int fsel = jtPesqProd.getSelectedRow();
    
    try {
    
    String idProd, nomeProd, pesoProd, valorProd, estoque, qtdProd, importar;
    
    Double valor;
    
    if (fsel == -1) {
    
             JOptionPane.showMessageDialog(null, "Você deve Selecionar um Produto", "Advertência", JOptionPane.WARNING_MESSAGE);
         } else {
             
             String[] linha = obterLinha(fsel, (DefaultTableModel)jtPesqProd.getModel());
    TelaInicialVendas tela = new TelaInicialVendas();
    adicionarLinha(linha, (DefaultTableModel)(tela.jtItensVenda.getModel()));
    
             
    
         }
    
     } catch (Exception e) {
     }
    
     // TODO add your handling code here:
    

    }

    /**

    • @param args the command line arguments
      /
      public static void main(String args[]) {
      /
      Set the Nimbus look and feel /
      //
      /
      If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

      • For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if (“Nimbus”.equals(info.getName())) {
        javax.swing.UIManager.setLookAndFeel(info.getClassName());
        break;
        }
        }
        } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TelaPesquisaVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TelaPesquisaVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TelaPesquisaVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TelaPesquisaVendas.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //
      /* Create and display the dialog */
      
      java.awt.EventQueue.invokeLater(new Runnable() {
      
      public void run() {
      
      TelaPesquisaVendas dialog = new TelaPesquisaVendas(new javax.swing.JFrame(), true);
      
      dialog.addWindowListener(new java.awt.event.WindowAdapter() {
      
      <a class="mention" href="/u/override">@Override</a>
      
      public void windowClosing(java.awt.event.WindowEvent e) {
      
      System.exit(0);
      
      }
      
      });
      
      dialog.setVisible(true);
      
      }
      
      });
      
      }
      
    // Variables declaration - do not modify
    
    private javax.swing.JButton bntAddItem;
    
    private javax.swing.JButton jButton1;
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JLabel jLabel2;
    
    private javax.swing.JLabel jLabel3;
    
    private javax.swing.JScrollPane jScrollPane1;
    
    private javax.swing.JTextField jtPesq;
    
    public javax.swing.JTable jtPesqProd;
    
    private javax.swing.JTextField txtQtdItem;
    
    // End of variables declaration
    
    }
    
SergioLucas

verdade, não sei qual o motivo de eu ter instanciado essa Tela. :open_mouth:

SergioLucas

Vou refazer esse código novamente, vi um video onde é feito a passagem de um Jtable de uma Jdialog para um Jtable de um Jframe, e não tem nada de diferente do que estou fazendo…
vou criar um projeto especifico só para fazer essa passagem, em seguida se funcionar, implemento no meu projeto de Vendas. :weary:

D

Acho que encontrei o problema, na tela de pesquisa vc adicionou um evento de pressionar algum botão que troca o DefaultTableModel da tabela substituindo os dados, parece que esse evento é chamado após pressionar “F1” em que a tela abre, não consegui identificar ao certo o motivo de da execução, vc pode fazer um teste:

Na tela inicial:

case "F1": {
         TelaPesquisaVendas telapesq = new TelaPesquisaVendas(null, true);
         String[] linha = obterLinha(jtItensVenda.getSelectedRow() , (DefaultTableModel)jtItensVenda.getModel());
         adicionarLinha(linha, (DefaultTableModel)(telapesq.jtPesqProd.getModel()));             telapesq.setVisible(true);
     }

e

private String[] obterLinha(int indice, DefaultTableModel model) {
    String[] linha = new String[5];
    linha[0] = model.getValueAt(indice, 0).toString();
    linha[1] = model.getValueAt(indice, 1).toString();
    linha[2] = model.getValueAt(indice, 2).toString();
    linha[3] = model.getValueAt(indice, 3).toString();
    linha[4] = model.getValueAt(indice, 4).toString();
    return linha;
}

private void adicionarLinha(String[] linha, DefaultTableModel model) {
    model.addRow(linha);
}

Na tela de pesquisa, altere as propriedades da tabela pelo netbeans, inserindo as colunas e removendo os itens inicias:

"Código ", "Descrição", "Peso", "Valor", "Estoque" // colunas

depois remova o keyListener da tabela, também nas propriedades (mantenha uma cópia do código antes de fazer a alteração).

SergioLucas

@diego12
Veja bem é aberta a TelaInicialVendas, para procurar um produto a tecla F1 é pressionada ,em seguida é carregada a TelaPesquisaVendas , já na Jtable é adicionado o cabeçalho que vai receber os dados do Banco de dados, que seria o Código, Nome, Peso, Valor e Estoque, então já deixei o titulo das colunas identificadas, para quando for puxar do banco já está com o titulo.
Criei um metódo para ajustar o tamanho das colunas, pois algumas precisam de mais espaço do que as outras , por isso fiz esse método.
A respeito das alterações, se eu colocar no Case F1 o código que você mencionou que é no TelainicialVendas eu teria que deixar o Setvisible(true) e o setModal(true) que já está no meu código? pois eu fiz isso e não carrega ao pressionar F1, também foi instanciado no Case F1, um Frame get Parent é responsável por deixar a tela em evidência se não me engano quando eu retiro não abre também o F1 ou seja é necessário.
Em relação aos métodos que você citou eu deixo ele na telaInicialVendas? pois você havia dito para deixar no TelaPesquisaVendas, caso seja lá eu tenho que instanciar e chamar eles no TelaInicial, eu coloquei os metódos obterlinha e AdicionarLinha em Público e chamei apartir do Tela inicial, de qualquer forma não funcionou… talvez não esteja fazendo correto.
É como se a Tabela da Tela inicial não fosse inicializada, se é que isso seria o termo possível de se chamar.
Eu não entendo tanta dificuldade, não sei pelo fato de eu colocar esse código para chamar através do F1, como eu falei eu vi o video de um americano que fez o tutorial ensinando, está basicamente do mesmo jeito, que a lógica que estamos usando… e ele também usa um Jdialog para jogar no Jframe, eu fiz do mesmo jeito dele o código e não funcionou… estou pensando em fazer um projeto especifico só para aprimorar isso depois jogar para o meu projeto e fazer como ele está mencionando no video que é próximo ao que relatou.

:weary:

D

Calma, uma coisa de cada vez, primeiro tentar passar os valores de um Table para outro. Se tentar fazer tudo funcionando de uma vez, não vai conseguir, o problema é que vc está substituindo o TableModel na tela da pesquisa.

Não, o cabeçalho precisa ser adicionada quando instancia a classe dentro do initComponents. Além disso é preferencial ter apenas um TableModel, naquele método está substituindo.

Não, serve para deixar centralizado e avisar o dialog quem é o antecessor, pode passar nulo para teste.

Sim, pode deixar nos dois se quiser, serve só para organizar o código, também pode substituir se quiser por outro equivalente.

Ela é iniciada, só que vazia, precisa atualizar isso nas propriedades da tabela pelo modo Design do Netbeans.

Eu refiz aqui como descrito mas com algumas modificações pois não tenho o BD:
TelaInicialVendas.java (21,3 KB)
TelaPesquisaVendas.java (9,9 KB)

SergioLucas

@diego12

A Respeito do seu Código vamos a algumas comparações:

1º No Código que eu havia feito (e enviado para você), o usuário entra na Tela inicial e a Jtable (jtItensVenda) está vazia, ao pressionar F1 é chamado o JDialog (TelaPesquisaVendas), nesse Jdialog tem uma Jtextfield eu coloco apenas uma letra, e ele automaticamente busca no banco de Dados e mostra na Jtable (jtPesqVenda) desse Jdialog (TelaPesquisaVendas), após encontrar o produto, é só clicar nessa linha desse Jtable (jtPesqVendas) e clicar em Adicionar Item, logo essa linha ou seja produto selecionado deve aparecer no Jtable (jtItensVendas) do Jframe (Tela Inicial).

No Seu código, os produtos já estão armazenados na Jtable(jtItensVendas) da Jframe(TelaInicialVendas), e quando pressionamos “F1” não acontece nada, porém se clicar em algum item que você cadastrou e pressionar F1, essa linha selecionada é enviada para Jtable (jtPesqVendas) da Jdialog (TelaPesquisaVendas). Isso está ao contrário do que planejava.

Creio que estamos quase lá, talvez eu deva adaptar o processo inverso. primeiramente o F1 deve chamar a Jdialog sem clicar em nada, afinal esse é o objetivo procurar o item de deseja adicionar para efetuar a venda.

Talvez eu não tenha explicado corretamente como seria esse procedimento.

D
Solucao aceita

TelaInicialVendas.java (21,0 KB)
TelaPesquisaVendas.java (10,0 KB)
Esperando que seja isso:

Na telaInicial:

-Evento pressionar F1

@Override
 public void actionPerformed(ActionEvent ae) {
     switch (tecla) {
     case "F1": {
             TelaPesquisaVendas telapesq = new TelaPesquisaVendas(TelaInicialVendas.this, true);
             telapesq.setVisible(true);
         }
     }
 }
}

O TelaInicialVendas.this retorna a instancia da Tela.

public Object[] obterLinha(int indice, DefaultTableModel model) {
    Object[] linha = new Object[5];
    linha[0] = model.getValueAt(indice, 0);
    linha[1] = model.getValueAt(indice, 1);
    linha[2] = model.getValueAt(indice, 2);
    linha[3] = model.getValueAt(indice, 3);
    linha[4] = model.getValueAt(indice, 4);
    return linha;
}
public void adicionarLinha(Object[] linha) {
    adicionarLinha(linha, (DefaultTableModel)jtItensVenda.getModel());
}
public void adicionarLinha(Object[] linha, DefaultTableModel model) {
    model.addRow(linha);
}

Mudei para object pois é melhor, adicionei outro método e tornei public para a pesquisa acessar

Na Tela Pesquisa:

private void bntAddItemActionPerformed(java.awt.event.ActionEvent evt) {
int fsel = jtPesqProd.getSelectedRow();
try {
// String idProd, nomeProd, pesoProd, valorProd, estoque, qtdProd, importar;
Double valor;
     if (fsel == -1) {

         JOptionPane.showMessageDialog(null, "Você deve Selecionar um Produto", "Advertência", JOptionPane.WARNING_MESSAGE);
     } else {
           TelaInicialVendas inicial = (TelaInicialVendas)getParent(); // o parent é a tela inicial
           inicial.adicionarLinha(obterLinha(jtPesqProd.getSelectedRow(), (DefaultTableModel)jtPesqProd.getModel()));
     }

 } catch (Exception e) {
 }

e troquei para public e object também

public Object[] obterLinha(int indice, DefaultTableModel model) {
    Object[] linha = new Object[5];
    linha[0] = model.getValueAt(indice, 0);
    linha[1] = model.getValueAt(indice, 1);
    linha[2] = model.getValueAt(indice, 2);
    linha[3] = model.getValueAt(indice, 3);
    linha[4] = model.getValueAt(indice, 4);
    return linha;
}

public void adicionarLinha(Object[] linha, DefaultTableModel model) {
    model.addRow(linha);
}
SergioLucas

@diego12

Funcionou Diego! :grinning:
Então as alterações que você fez foi colocar o Object[] ao invés do String[] e tornar público os métodos.

Gostaria de fazer duas perguntas:
1º Temos o mesmo método na TelaInicialVendas e TelaPesquisaVendas… eles enviam os dados de uma para o outro? essa parte eu não entendi.

2º A primeira linha da minha Jtable está ficando em branco (Ou seja sem registro) logo ao abrir, como eu removo essa linha para não aparecer, fui no conteúdo da tabela e não é mostrado nenhuma linha, pelo que eu vi no inicialize também não detectei nada que pudesse chamar a linha em branco. No seu código essa linha em branco.

Desde já agradeço o empenho e a ajuda na resolução desse problema, havia parado o desenrolar do projeto por causa desse item.

D

Agora precisa arrumar algumas coisas:

Remova aqueles métodos de adicionarLinha e obterLinha, pois só são métodos de testes.

Na tela pesquisa, no adicionar item substitua por:

// obtem a tela inicial
TelaInicialVendas inicial = (TelaInicialVendas) getParent();

// separa os dados para tranferir
String idProd, nomeProd, pesoProd, valorProd, estoque, qtdProd, importar;
idProd = jtPesqProd.getValueAt(linha, 0).toString();
nomeProd = jtPesqProd.getValueAt(linha, 1).toString();
pesoProd = jtPesqProd.getValueAt(linha, 2).toString();
valorProd = jtPesqProd.getValueAt(linha, 3).toString();
// TODO
// estoque = jtPesqProd.getValueAt(linha, 4).toString(); // desnecessario no momento

// envia para a outra janela
inicial.adicionarProduto(idProd, nomeProd, pesoProd, valorProd, quantidade);

Isso é bem similar ao que vc tinha feito, acredito que o estoque não é importante ser enviado para a outra tabela, mas se for coloque também no parâmetro, a quantidade vem do textField da tela.

Adicione na tela inicial:

public void adicionarProduto(String idProd, String pesoProd, String valorProd, int quantidade) {
    DefaultTableModel model = (DefaultTableModel) jtItensVenda.getModel();
    Object[] linha = new Object[5]; // cria a linha
    linha[0] = idProd;
    linha[1] = nomeProd;
    linha[2] = pesoProd;
    linha[3] = valorProd;
    linha[4] = quantidade;
    model.addRow(linha);
}

Similar ao adicionar linha, a diferença são os parâmetros.

Fazer dessa forma é melhor e mais seguro do que adicionarLinha e obterLinha.

Após as modificações fica mais fácil de entender, a Tela Pequisa conhece a Inicial porque é passada por parâmetro no construtor. No evento do botão adicionar, recupera a janela e transfere usando o método adicionarProduto, que atualiza a tabela.

É um erro de configuração, em alguma propriedade da tabela, não tenho Netbeans aqui, então não sei exatamente como resolver. Em algum lugar, no modo design, clicando com botão direito do mouse e em alguma propriedade, é possível remover essa linha.

SergioLucas

Certo @diego12, farei as modificações e procurarei de onde está vindo esse erro.

SergioLucas

Acabei de encontrar o Erro :slight_smile:

Na Jtable havia um espaço branco entre chaves que estava ocasionando a linha indesejada.

Obrigado @diego12 pela paciência em me ajudar!

SergioLucas

Pronto @diego12, concluí as modificações e aproveitei já para forçar o usuário digitar a quantidade, eu até coloquei no principio para ele calcular o valor digitado com a quantidade do estoque, porém eu verifiquei que se eu colocar o valor todo, ou seja, por exemplo ser tiver 20 produtos e na busca eu selecionar e colocar 20 a quantidade, se eu selecionar novamente para buscar ainda mostrará que está com 20 unidades, ou seja, acho melhor deixar para conferir isso quando for finalizar a venda, pois não posso fazer o update no banco sem antes finalizar a venda, pois caso o usuário não queira o produto podemos retirar o item.

Agradeço pela ajuda mais uma vez.
Creio que daqui para o término de projeto surgirá novas dúvidas.
Caso não consiga resolver postarei no GUJ, me esforçarei em tentar resolver o máximo que der.

Criado 9 de março de 2018
Ultima resposta 11 de mar. de 2018
Respostas 33
Participantes 3