Olá Janaine!

Tente criar uma classe extends AbstractTableModel ou implements TableModel e
mude o método
boolean isCellEditable(int rowIndex, int columnIndex). E depois "sete" (verb
to set) o model no seu JTable assim:
jTabble.setModel(um objeto da sua classe modelo);

Ex: Um programa que testa a classe MyTableModel mais abaixo

// Arquivo TesteTableModel.java
import javax.swing.*;
import java.awt.*;

public class TesteTableModel extends JFrame {

  JTable table = new JTable();
  JScrollPane scrollPane = new JScrollPane();
  MyTableModel tableModel = new MyTableModel();

  public TesteTableModel() {
    table.setModel(tableModel);
    // adiciona 10 linhas. Note que as operações são feita no modelo
    for(int i = 0; i < 10; i++)
      tableModel.addRow();

    // adiciona 3 colunas
    tableModel.addColumn("coluna 2");
    tableModel.addColumn("coluna 3");
    tableModel.addColumn("coluna 4");
    scrollPane.getViewport().add(table);
    this.getContentPane().add(scrollPane);
    this.setDefaultCloseOperation(3);
    this.setSize(300,300);
    this.show();
  }

  public static void main(String arg[]) {
    new TesteTableModel();
  }
}

// Arquivo MyTableModel.java

import javax.swing.table.AbstractTableModel;
import javax.swing.event.TableModelEvent;
import java.util.Vector;

/**
 * @author Willian Charles Balmant
 */
public class MyTableModel extends AbstractTableModel {

  Vector rows = new Vector();  // field que guardará os valores das linhas
do JTable
  Vector columnHeaders = new Vector(); // field que guardará os nomes das
colunas do JTable

  public MyTableModel() {
    Vector aux = new Vector();
    aux.addElement("");
    columnHeaders.addElement("coluna 1");
    rows.addElement(aux);
    fireTableChanged(null);
  }

  /** esté é o método que vai dizer se a coluna é editável ou não */
  public boolean isCellEditable(int rowIndex, int columnIndex) {
    if(columnIndex == 0)
      return false;
    return true;
  }

  /** quantas linhas tem a tabela? */
  public int getRowCount() {
    return rows.size();
  }

  /** quantas colunas tem a tabela? */
  public int getColumnCount() {
    System.out.println("ColumnCount = " + columnHeaders.size());
    return columnHeaders.size();
  }

  /** qual o valor da célula(x, y) ? */
  public Object getValueAt(int rowIndex, int columnIndex) {
    return ((Vector)rows.elementAt(rowIndex)).elementAt(columnIndex);
  }

  /** retorna a classe da coluna
    *  para esse caso estou supondo que serão todas Object
    */
  public Class getColumnClass(int columnIndex) {
    return Object.class;
  }

  /** qual é o nome da coluna? */
  public String getColumnName(int column) {
    return columnHeaders.elementAt(column).toString();
  }

  /** retorna todos os nomes das colunas em um array de Strings */
  public String[] getColumnNames() {
    String [] aux = new String[getColumnCount()];
    for(int i = 0; i < getColumnCount(); i++)
      aux[i] = columnHeaders.elementAt(i).toString();
    return aux;
  }

  public Vector getRows() {
    return rows;
  }

  /** o que fazer quando a célula for editada */
  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    ((Vector)rows.elementAt(rowIndex)).setElementAt(aValue, columnIndex);
  }

  /** você passa o nome e ela retorna o número da coluna */
  public int findColumn(String columnName) {
    return columnHeaders.indexOf(columnName);
  }

  /** adiciona 1 linha */
  public void addRow() {
    Vector newRow = new Vector();
    for (int i = 1; i <= getColumnCount(); i++) {
      newRow.addElement("");
    }
    rows.addElement(newRow);
    // Avisa os listeners que a nova tabela chegou.
    fireTableChanged(new TableModelEvent(this));  // Avisa os listeners que
a nova tabela chegou.
  }

  /** adiciona uma linha antes da linha index */
  public void addRowAt(int index) {
    Vector newRow = new Vector();
    for (int i = 1; i <= getColumnCount(); i++) {
      newRow.addElement("");
    }
    rows.add(index, newRow);
    // Avisa os listeners que a nova tabela chegou.
    fireTableChanged(new TableModelEvent(this));
  }

  /** remove a linha index */
  public void removeRow(int index) {
    rows.removeElementAt(index);
    // Avisa os listeners que as linha de index até index foram deletadas
    fireTableRowsDeleted(index, index);
  }

  /** adiciona uma nova coluna com o nome columnName */
  public void addColumn(String columnName) {
    for(int i = 0; i < getRowCount(); i++) {
      ((Vector)rows.elementAt(i)).addElement("");
    }
    columnHeaders.addElement(columnName);
    fireTableChanged(null);
  }

  /** remove a coluna index */
  public void removeColumn(int index) {
    columnHeaders.removeElementAt(index);
    for(int i = 0; i < getColumnCount(); i++) {
      ((Vector)rows.elementAt(i)).remove(index);
    }
    fireTableChanged(null);
  }
}


Espero ter ajudado!

Willian Charles Balmant


----- Original Message -----
From: Janaine Cristiane de Souza
To: Lista Java
Sent: Sunday, January 13, 2002 1:13 PM
Subject: [java-list] JTable




Ola.
Eu criei um JTable com apenas uma coluna preenchida e as demais serão
preenchidas, posteriormente, pelo usuário. Gostaria de saber o que devo
fazer para esta coluna não ser alterada pelo usuario.

Agradeco desde ja,
Janaine


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a