JTable não editável porém clicável

2 respostas
R

Boa Tarde!

Quero que a Jtable que eu criei fique não editável, porém quero que ela parmaneeça clicável.
Encontrei diversos códigos que faz isso, mas não de uma forma que me permite acrescentar no meu codigo.
Segue abaixo o código que criei para criar a Jtable.

Obrigado!

public class TableGrade
{

  private ResultSet res;
  private JTable table;
    
  	
  public void setTable(BD con, String sql)
  {
     try 
     {
        Vector cabecalho = new Vector();
        Vector linhas = new Vector();
        res = con.statement.executeQuery(sql);
        res.next();
        // busca os cabe�alhos 
        ResultSetMetaData rsmd = res.getMetaData();
        for ( int i = 1; i <= rsmd.getColumnCount(); i++ ) 
            cabecalho.addElement( rsmd.getColumnLabel( i ) );
     
        // busca dados das linhas
        do 
        {
           Vector linhaAtual = new Vector();
           DecimalFormat df = new DecimalFormat("R$ 00.00");           
           for ( int i = 1; i <= rsmd.getColumnCount(); i++ )
           {
      	       switch( rsmd.getColumnType(i)) 
        	   {
        	      case Types.VARCHAR:
        	         linhaAtual.addElement(res.getString(i));break;
        	      case Types.TIMESTAMP:
         	         linhaAtual.addElement(res.getDate(i));break;
        	      case Types.DOUBLE:
          	         linhaAtual.addElement(""+res.getDouble(i));break;
        	      case Types.INTEGER:
           	         linhaAtual.addElement(""+res.getInt(i));break;
        	      case Types.NUMERIC:
            	         linhaAtual.addElement(""+df.format(res.getDouble(i)));break;
        	      case Types.SMALLINT:
            	         linhaAtual.addElement(""+res.getInt(i));break;
//           	      default:System.out.println(rsmd.getColumnType(i));  
                      case Types.DECIMAL:
                        linhaAtual.addElement(""+res.getDouble(i));break;
                      case Types.CHAR:
                        linhaAtual.addElement(""+res.getString(i));break;
        	   }
           }
           linhas.addElement(linhaAtual);     
        } 
        while ( res.next() );       
         // Mostra a tabela com cabe&#65533;alhos e registros
        table = new JTable( linhas, cabecalho );
        table.setBackground(new Color(255,255,255));        
      }
      catch (SQLException erro) 
      { 
      	JOptionPane.showMessageDialog(null, "Nenhum Registro encontrado");
      }
   } 
  public JTable getTable()
  {
	  return table;
  }

2 Respostas

Marky.Vasconcelos

Voce tem que aprender a trabalhar com o Model da JTable. E após aprender a usar o DefaultTableModel implemente o seu proprio ou entao procura algum que ja implementaram.

R

Use um TableModel para preencher os dados da sua JTable. Para que ela não seja editável, o método isCellEditable() do TableModel deve retornar false:

http://java.sun.com/javase/6/docs/api/javax/swing/table/TableModel.html#isCellEditable(int,%20int)

Criado 11 de junho de 2009
Ultima resposta 12 de jun. de 2009
Respostas 2
Participantes 3