Jtable nao escreve as linhas

2 respostas
fabiodurgante
String[] columnNames = {"Código", "Nome", "Estado", "CPF", "Data", "Foto"};
		Object[][] dados =
		{
			{new ImageIcon("tomcat.gif"), "Copy"},
			{new ImageIcon("MS.GIF"), "Add"},
		};
 
		DefaultTableModel modelo = new DefaultTableModel(dados, columnNames);
		JTable tabela = new JTable( modelo )
		{
			//  Returning the Class of each column will allow different
			//  renderers to be used based on Class
			public Class getColumnClass(int column)
			{
				return getValueAt(0, column).getClass();
			}
		};

       ClienteDao clienteD = new ClienteDao();
   
             tabela.setModel(modelo);

    List<Cliente> lista = clienteD.listar(campo_pra_pesquisaNome.getText());//aqui pega o campo por parametro pra pesquiza
           
   modelo.addRow(new String[]  {
                       
       cli.getid_Cliente().toString(), 
           cli.getNome_Cliente(),
            cli.getEstado_Cliente(), 
            cli.getCpf_Cliente(),
            dataFormatada,
           // cli.getData_Cliente().toString(), 
           
        
       });

mas nao escreve nada

2 Respostas

dionat4n

Os dados passados no "Object[][] dados" precisam ter o mesmo número de colunas da tabela!

Por exemplo(tem 5 colunas e 5 campos preenchidos em cada linha do Object[][] data):
String[] columnNames = {"First Name",
                            "Last Name",
                            "Sport",
                            "# of Years",
                            "Vegetarian"};

Its data is initialized and stored in a two-dimensional Object array:

    Object[][] data = {
        {"Mary", "Campione",
         "Snowboarding", new Integer(5), new Boolean(false)},
        {"Alison", "Huml",
         "Rowing", new Integer(3), new Boolean(true)},
        {"Kathy", "Walrath",
         "Knitting", new Integer(2), new Boolean(false)},
        {"Sharon", "Zakhour",
         "Speed reading", new Integer(20), new Boolean(true)},
        {"Philip", "Milne",
         "Pool", new Integer(10), new Boolean(false)}
    };

Aconselho-te a ler esse tutorial:
How to Use Tables
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

fabiodurgante
private void preencheTabelaNomeCliente(){
     DefaultTableModel modelo = new javax.swing.table.DefaultTableModel(              
          new Object[][]  {  },             
           
           new String[] {"Código", "Nome", "Estado", "CPF", "Data", "Foto"} 
    
        );
  
  
       ClienteDao clienteD = new ClienteDao();
   
tabela.setModel(modelo);

    final List<Cliente> lista = clienteD.listar(campo_pra_pesquisaNome.getText());//aqui pega o campo por parametro pra pesquiza
           
        try {
            //aqui pega o campo por parametro pra pesquiza
            // jButton2.setIcon(new ImageIcon("C:\teste\excluir.gif"));
            // jButton2.setIcon(new ImageIcon(clienteD.getImagens((2))));
            jButton2.setIcon(clienteD.getImagen((2)));
        } catch (SQLException ex) {
            Logger.getLogger(ConsultarCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
     
    
    tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   
    tabela.getColumnModel().getColumn(0).setPreferredWidth(50);  
    tabela.getColumnModel().getColumn(1).setPreferredWidth(140);    
     tabela.getColumnModel().getColumn(2).setPreferredWidth(45);     
       tabela.getColumnModel().getColumn(3).setPreferredWidth(100);
       tabela.getColumnModel().getColumn(4).setPreferredWidth(240);
     tabela.getColumnModel().getColumn(5).setPreferredWidth(220);
  
    tabela.setRowHeight(100); 
  

class ImageRenderer extends DefaultTableCellRenderer { 
      ImageIcon[] icon= new ImageIcon[2]; 
      
 JLabel[] labels = new JLabel[2];     
      
  
      
    ImageRenderer() { 
       
       
        icon[0] = new ImageIcon("MS.GIF"); 
         icon[1] = new ImageIcon("tomcat.gif"); 
      } 
       
      public Component getTableCellRendererComponent(JTable table, Object value, 
                                                     boolean isSelected, boolean hasFocus,  
                                                     int row, int column) {                   
          
      
ImageIcon[] img = null;          
              
      
    labels[0] = new JLabel(icon[0]);     
 
   for(int i = 0; i <= labels.length; i++) {   
      labels[i].setIcon(icon[i]);
      labels[i].setBackground(Color.BLUE);       
      return labels[i];
      
   } 
        return null;
      }
       
}
 

   
String data = ("EEEE, dd 'de' MMMM 'de' yyyy, HH:mm:ss");
String dataFormatada ;
SimpleDateFormat formata = new SimpleDateFormat(data);  

  for(    final Cliente cli:lista) {  

//cor de titulo
  JTableHeader titulos = tabela.getTableHeader();
titulos.setForeground(Color.BLUE);



 tabela.getColumnModel().getColumn(5).setCellRenderer(new ImageRenderer()); 
//TableColumn tc = tabela.getColumn("Foto"); 
//tc.setCellRenderer(new ImageRenderer());

 
    
 //tabela.updateUI();
  


//tabela.getModel().setValueAt(new ImageRenderer(),1,3);

dataFormatada = formata.format(cli.getData_Cliente()); 


       modelo.addRow(new String[]  {
                       
       cli.getid_Cliente().toString(), 
           cli.getNome_Cliente(),
            cli.getEstado_Cliente(), 
            cli.getCpf_Cliente(),
            dataFormatada,
           // cli.getData_Cliente().toString(), 
           
        
       });


    }

        
        }

essa tabela ai eu coloco na coluna Foto um array de jlabel e set o icone deles porem aparece o icone em toda a coluna eu queria que aparecesse o icone em cada linha da coluna um icone e nao o mesmo em toda a coluna

Criado 7 de fevereiro de 2009
Ultima resposta 7 de fev. de 2009
Respostas 2
Participantes 2