hehehe, vamos por parte:
Não permita ao usuário modificar manualmente os dados da célula na qual clique, mas permita que o valor da célula seja alterado pela chamada de um método;
pra que a jtable não possa ser modificada voce tem que setar isto no model,
caso use o netbeans é só ir em propriedades >> cliacar no botao […] em frente a palavra model >> e desmarcar a caixa de seleção editable dos campos
Trabalhe com os métodos “addRow()” e “removeRow()”;
isto voce faz atraves do model da tabela:
((DefaultTableModel)jTable1.getModel()).addRow(new Object[] {
new String("blablabla"),
new Integer(3),
new ......
});
((DefaultTableModel)jTable1.getModel()).removeRow(3);
Gere um evento quando o usuário clica numa linha;
é so criar o seguinte listener para obter qual linha foi selecionada.
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
jTable1.getSelectedRow();
}
espero ter ajudado mais que confundido…
[ ]'s
Luiz Rocha, Bom dia!
Eu recomendo tudo o que o rodrigo.ccn2005 recomendou, só que eu vou mais além: implemente vc mesmo um TableModel, asim vc só terá vantagens, como, por exemplo, resolver de forma muito mais reutilizável e elegante a forma como vc irá recuperar os dados presentes na tabela e também utilizar os recursos já existentes na API pra “popular” as linhas. Aposto que vc estava inserindo os dados “manualmente”, não era?
Na classe abaixo (que está 80% concluida, :D) eu mostro minha implementação de model. É um model para recuperar funcionários. Veja só:
/*
* FuncionarioTableModel.java
*
* Created on 18 de Novembro de 2006, 02:29
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package visual.model;
import entidades.pessoas.Funcionario;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import persistencia.Banco;
import util.Util;
/**
*
* @author sombriks
*/
public class FuncionarioTableModel extends AbstractTableModel
implements TableModel{
private List<Funcionario>data;
private Banco b;
private Util util;
/** Creates a new instance of FuncionarioTableModel */
public FuncionarioTableModel(Banco b,Util util) {
this.b=b;
this.util=util;
}
public int getRowCount() {
return data != null ? data.size() : 0;
}
public int getColumnCount() {
return 9;
}
public Funcionario getFuncionario(int index){
return data.get(index);
}
public void select(Funcionario f){
if(f == null)
data = b.select(Funcionario.class);
else
data = b.select(f);
fireTableDataChanged();
}
public void insert(Funcionario f){
if(f != null)
b.set(f);
select(null);
}
public void update(Funcionario f){
if(f != null)
b.set(f);
select(null);
}
public void delete(Funcionario f){
if(f != null)
b.delete(f);
select(null);
}
public String getColumnName(int columnIndex) {
switch(columnIndex){
case 0 :
return "id";
case 1 :
return "login";
case 2 :
return "nome";
case 3 :
return "nome do pai";
case 4 :
return "nome da mãe";
case 5 :
return "data de nascimento";
case 6 :
return "nº da identidade";
case 7 :
return "salário mensal";
case 8 :
return "nível de acesso";
default :
return "";
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(getRowCount()>0){
switch(columnIndex){
case 0:
return data.get(rowIndex).getId();
case 1:
return data.get(rowIndex).getLogin();
case 2:
return data.get(rowIndex).getNome();
case 3:
return data.get(rowIndex).getNomePai();
case 4:
return data.get(rowIndex).getNomeMae();
case 5:
return data.get(rowIndex).getDataNasc();
case 6:
return data.get(rowIndex).getIdentidade();
case 7:
return data.get(rowIndex).getSalario();
case 8:
return data.get(rowIndex).getLvAcesso();
default:
return null;
}
}return null;
}
}
Assim, quando eu uso o método create | update | delete | select eu insiro os dados e atualizo a tabela com o método vindo de AbstractTableModel, fireTableChanged();
bom, qq dúvida continue a fazer tópicos, 
té+++
Estou com um problema que já me tomou dias:
Eu quero uma JTable que:
Não permita ao usuário modificar manualmente os dados da célula na qual clique, mas permita que o valor da célula seja alterado pela chamada de um método;
Trabalhe com os métodos “addRow()” e “removeRow()”;
Gere um evento quando o usuário clica numa linha;
E eu só consigo uma coisa ou outra. Como é que eu faço?
Se você não souber, pelomenos obrigado pelo interesse.