Duvida JTable

6 respostas
H

Queria saber se tem como e se tiver, como faco p n permitir editar as celulas do JTable. Eu procurei no NetBeans e na api JTable e DefaultTableModel, mas n achei nd. No caso, so vai permitir selecao, edicao n, vlw.

6 Respostas

javaBeats

http://javaalmanac.com/egs/javax.swing.table/pkg.html

// Create a JTable that disallow edits
    JTable table1 = new JTable() {
        public boolean isCellEditable(int rowIndex, int vColIndex) {
            return false;
        }
    };
    
    // Create a JTable based on the same model as table1 but allows edits
    JTable table2 = new JTable(table1.getModel());
    
    // Create a model that disallows edits; JTable's using this model will not allow edits
    TableModel model = new DefaultTableModel() {
        public boolean isCellEditable(int rowIndex, int mColIndex) {
            return false;
        }
    };
H

Dx ver se entendi: eu to criando a classe e sobrescrevendo o metodo isCellEditable(int, int) p retornar sempre false. Exato?

Obs: pensei q so podia sobrescrever qnd herdasse 1 classe ou implementasse 1 interface, fiquei meio sem entender este codigo, mas blz.

javaBeats

Esse exemplo é um exemplo de herança, mas com classes anônimas. Quando vc cria um objeto dessa maneira, é o mesmo que declarar uma nova subclasse do tipo especificado, mas sem um arquivo próprio de código fonte, e sem que seja possível referênciá-la em outro contexto que não o do código onde ela existe.

Exemplo:

Thread t = new Thread() {
    public void run() {
        System.err.println("Código em classe anônima...");
    }
};
t.start();

A variável “t”, neste caso, é uma instância de uma subclasse de Thread - mas esta subclasse é anônima, isto é, não é declarada em nenhum lugar, apenas aqui, e usada temporariamente, ou seja, no escopo de execução deste código.

No exemplo da JTable, estão sendo criadas classes anônimas. Quando o código é compilado, gera arquivos .class para elas também. Esses arquivos são nomeados com “MinhaClass$1”… “MinhaClasse$2”… ou algo parecido.

Cya
Rodrigo

H

Ok, blz.

So p fechar o assunto, entao n existe 1 metodo setEditable(boolean) q faca isso diretamente no JTable, ou seja, eu vo ter q herdar e sobrescrever o metodo isCellEditable, correto?

javaBeats

Sim,

Ao menos eu sempre fiz desse jeito, e mesmo antes de te responder eu pesquisei um pouquinho e não encontrei nada diferente. Talvez esse seja um dos motivos pelos quais se reclama tanto de JTable na swing. :frowning:

Talvez existam outras implementações, open source, que sejam melhores. Não custa procurar um pouquino na ASF, ou no sourceforge.net

Rodrigo

H

Eh antes d perguntar eu tb pesquisei “um poucão” e tb n encotnrei, ehhe, vlw fera!

Criado 18 de julho de 2006
Ultima resposta 18 de jul. de 2006
Respostas 6
Participantes 2