CheckBox em JTable

3 respostas
viniciusfaleiro
Galera, eu dei uma pesquisada no forum sobre como usar checkbox em Jtables e consegui chegar nisso: (Não conhecia Models de JTable)
/*  
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.  
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.  
*/   
  
/**  
* An example showing the JTable with a dataModel that is not derived  
* from a database. We add the optional TableSorter object to give the  
* JTable the ability to sort.  
*  
* @version 1.3 10/14/97  
* @author Philip Milne  
*/   
   
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
  

import javax.swing.JOptionPane;

  
import javax.swing.table.AbstractTableModel;   
import javax.swing.table.TableModel;   

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSetMetaData;
import com.mysql.jdbc.Statement;
  
  

public class RelatTableModel   
{   
    
    public TableModel getRelatTableModel ()   
    {   
 
        final String[] names = {   
            "Centro", "Incluir"
        };   
        
        try{
        Class.forName(drv);		
		con = (Connection) DriverManager.getConnection(url,usr,pwd);
		stm = (Statement) con.createStatement(); 
		
		ResultSet rs = stm.executeQuery("SELECT `cod` FROM `cad_custo`");
		ResultSetMetaData rsmeta = (ResultSetMetaData)rs.getMetaData();
		int ncolumns = rsmeta.getColumnCount();
	
		list = new ArrayList();
		
		while(rs.next()){

			for(int i = 1; i<=ncolumns; i++){
				list.add(rs.getObject(i));
			}
			
		}
        }catch(Exception e){
        	JOptionPane.showMessageDialog(null, "erro:" + e.getMessage());
        }
		
        final Object[][] data =  new Object [list.size()][list.size()];
        
        
        for(int j = 0; j < list.size(); j++){
        	data[j][0] = list.get(j); 
        	data[j][1] = new Boolean(false);
        }
      
       
        TableModel dataModel = new AbstractTableModel() {   
                
                public int getColumnCount()   
                {   
                    return names.length;   
                }   
  
                public int getRowCount()   
                {   
                    return data.length;   
                }   
  
                public Object getValueAt(int row, int col)   
                {   
                    return data[row][col];   
                }   
  
               
                public String getColumnName(int column)   
                {   
                    return names[column];   
                }   
  
                public Class getColumnClass(int col)   
                {   
                    return getValueAt(0, col).getClass();   
                }   
  
                public boolean isCellEditable(int row, int col)   
                {   
                    return (col == 4);   
                }   
  
                public void setValueAt(Object aValue, int row, int column)   
                {   
                    data[row][column] = aValue;   
                }   
            };   
  
            return dataModel;
    }   
private ArrayList list;    
private static final String drv = "org.gjt.mm.mysql.Driver";
private static final String url = "jdbc:mysql://localhost:3306/test";
private static final String usr = "timeasybill";
private static final String pwd = "*03mezuza08";
private Connection con;
private Statement stm;
    
}

Só que tentei de todos os jeitos e não consigo fazer o checkbox ficar editável, ou seja, assinaldo ou não assinalado. Tentei ler vários posts do forum más realmente não consegui. Preciso de ajuda!

Ps. Utilizei o código conforme citado no cabeçalho e fiz algumas alterações.

3 Respostas

brlima

Links bem legais sobre esse mesmo tema:

:arrow: http://www.guj.com.br/posts/list/35542.java
:arrow: http://www.guj.com.br/posts/list/37535.java

Alguem deles deve ajudar você…

Grinvon

Pesquise um componente customizado chamado de JTreeTable eu o utilizo para usar o não convencional, como colocar combos, checkbox, imagens e outras coisas, mas não é tão simples o seu uso mesmo assim.

A
Segue um exemplo que utilizo.

tabela_itens.setModel(new javax.swing.table.DefaultTableModel(new Object [][]{},

new String[]{“Seleciona,ID,Código,Descrição”})

{

Class[] types = new Class [] {

java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class

};

boolean[] canEdit = new boolean [] {

true, false, false,false

};

public Class getColumnClass(int columnIndex) {

return types [columnIndex];

}public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

}});

E quando precisar adicionar um linha, utilize o exemplo abaixo.
dtm.addRow(new Object[]{new Boolean(false), null, null, null});

espero que com o exemplo acima eu possa ter ajudar…flw

Criado 24 de junho de 2008
Ultima resposta 29 de jun. de 2008
Respostas 3
Participantes 4