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]
-------------------------------------------------------------------------