Tentando Criar uma Abstract Table, mas algo esta errado! oq?

9 respostas
A

Estou tentando novamente, mas estou com muita dificuldade!
Não esta aparecendo a table com os dados do Banco!
[size=24]
CODIGO COMPLETO ABAIXO![/size]

Anexei o projeto!

9 Respostas

drsmachado

Quando postar código, favor usar a tag [code]

A

Ok!

yurifw

posta tb qual erro esta dando e em qual linha, assim fica complicado. se possivel poste tb a parte relevante do stack trace

A

Yuri ja criei a table model,DAO, agora estou com dificuldade de criar modelTest com JFrame, pois quando executo não aparece os dados do BD!

Como faço um Jframe, sendo que o comando Sql fica DAO?

Database com var nome,genero, ja colcoquei os valores com inserts, mas não aparace esses valores na table!

yurifw

aparentemente falta vc setar o seu table model na sua JTable. use o metodo setModel da JTable, se isso n funcionar (ou se vc ja tiver feito isso e eu n vi) coloca o stack trace do erro.

A

Yuri ,estou quase conseguindo!

aparece as duas colunas no caso Nome e Genero!

Mas não aparece, os dados de tem no Banco de dados!

Acho que o problema seja com a conexão, o problema é a onde!?

A

Estou tentando novamente, mas estou com muita dificuldade!
Não esta aparecendo a table com os dados do Banco!
[size=18]
Codigo completo![/size]

----------------------------CLASSE INICIAL LIVROS-----------------------------------------------------
public class Livros {

   private String nome;
   private String genero;
}
//com sets e gets
--------------------------------------------classe LivroDAO ------------------------------------------------------------------
package DAO;
import Inicial.Livros;
import java.sql.Connection;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  
import java.sql.SQLException;
import java.util.ArrayList;  
import java.util.List; 

public class LivroDAO {
    private Connection conn;
    public LivroDAO(){
            this.conn = new ConexaoBD().getConnection();
       
    }  
     public List<Livros> Lsta() throws SQLException{  
         List<Livros> bok = new ArrayList<Livros>();
      String sql = " select * from livros";
        try {  
           PreparedStatement stmt = this.conn.prepareStatement(sql);  
              
            ResultSet rs = stmt.executeQuery();  
            
            while (rs.next()){
                Livros book = new Livros();
                book.setNome(rs.getString("nome"));
                book.setGenero(rs.getString("genero"));
            }
            rs.close();
            stmt.close();
           
        }  catch ( Error e ){
            throw new RuntimeException(e);
        }
        return bok;
        
    }  

}
--------------------------------------------------------class ConexaoBD-----------------------------------------------------------------
package DAO;

import java.sql.*;

public class ConexaoBD {
    private static final String URL_MYSQL = "jdbc:mysql://localhost/loja";
    private static final String DRIVER_CLASS_MYSQL = "com.mysql.jdbc.Driver";
    private static final String USER = "root";
    private static final String PASS = "";

    public static Connection getConnection() {
        System.out.println("Conectando ao Banco de Dados");
        try {
            Class.forName(DRIVER_CLASS_MYSQL);
            return DriverManager.getConnection(URL_MYSQL, USER, PASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return null;
    }

    public static void close(Connection conn, PreparedStatement stmt, ResultSet rs) {
        try {
            if (conn!= null) {
                conn.close();
            }

            if (stmt!= null) {
                stmt.close();
            }

            if (rs!= null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
--------------------------------------------------class LivroModel---------------------------------------------------------------
package Inicial;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class LivroModel extends AbstractTableModel{
    private final int COL_NOME = 0;
    private final int COL_GEN = 1;
   private List<Livros> linhas;
   private String[] colunas = new String[]{"Nome","Genero"};

   public LivroModel(){
       linhas = new ArrayList<Livros>();
   }
   
   public LivroModel(Collection<Livros> listaDeLivros){
        this.linhas = new ArrayList<Livros>(listaDeLivros);
   }

   public void setLinhas(List<Livros> linhas){
       this.linhas = linhas;
   }
   @Override
    public int getRowCount() {
      return linhas.size();
   }

    @Override
    public int getColumnCount() {
      return colunas.length;
    }
   @Override
     public String getColumnName(int columnIndex) { 
        if(columnIndex == COL_NOME){
            return "Nome";
        }if (columnIndex == COL_GEN){
         return "Genero";
     }
        return colunas[columnIndex];  
    }
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
           Livros livro = linhas.get(rowIndex);
           switch (columnIndex){
               case 0:
                   return livro.getNome();
               case 1:
                   return livro.getGenero();
                   default:
                       throw new IndexOutOfBoundsException("columnIndex out of bounds");
           }
    }

          @Override
          public void setValueAt(Object aValue, int rowIndex, int columnIndex) {};
	
	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		return false;
	}
       public Livros getLivro(int indiceLinha){
           return linhas.get(indiceLinha);
       }
       public void addLivro(Livros liv){
           linhas.add(liv);
           int ultimoIndice = getRowCount()- 1;
           fireTableRowsInserted(ultimoIndice, ultimoIndice);
       }
       public void removeSocio(int indiceLinha) {
		linhas.remove(indiceLinha);

                fireTableRowsDeleted(indiceLinha, indiceLinha);
	}

	public void addListaDeSocios(List<Livros> livro) {
	
		int tamanhoAntigo = getRowCount();

		linhas.addAll(livro);

		fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
	}
	public void limpar() {
		
		linhas.clear();

		fireTableDataChanged();
	}
	public boolean isEmpty() {
		return linhas.isEmpty();
	}
  }
-----------------------------------------------CLASSE LIVROTESTE----------------------------------------------------------------------
package Inicial;

import java.awt.BorderLayout;
import java.util.List;
import javax.swing.JFrame;

public class LivroTest extends javax.swing.JFrame {
         public List<Livros> livrosLis;
         private static LivroModel mod;
         LivroModel model = new LivroModel();
     
    public LivroTest() {
        try{
//        super("Teste"); 
         initComponents();
          model = new LivroModel();
        jTable1.setModel(model);
            
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        }catch (Exception e){
            e.printStackTrace();
                    
        }
      
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        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.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(15, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* 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(LivroTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(LivroTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(LivroTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(LivroTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LivroTest().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration                   
}
yurifw

agora vc setou o modelo mas n colocou nenhum Livro nela cara, ou vc passa uma Collection de Livro na hora de instanciar ou vc usa o seu metodo setLinhas… isso é código que você mesmo escreveu cara (deveria ser) tenta se esforçar mais, como vc espera que sejam exibidas as informações se vc n está enviando nenhuma? se alguem te passou esse código vc n deveria estar usando sem antes ter entendido 100% e pelas perguntas fica bem claro que você não entende o que nada disso faz. Para seu próprio bem, não faça isso. E se fosse em um emprego onde sua imagem está em jogo e vc n sabe o q o código ta fazendo? se vier pedir ajuda no forum tem sempre a chance de ninguem te ajudar, pense nisso cara… vale mesmo a pena colocar o codigo pra funcionar agora se da proxima vez que você passar pelo mesmo problema vai ser o mesmo sufoco?

A

Obrigado Yuri, esse assunto é muito complicado mesmo!

Criado 12 de setembro de 2013
Ultima resposta 13 de set. de 2013
Respostas 9
Participantes 3