Pessoal como faço pra não permitir a edição de uma JTable. Sei que tem outras alternativa, mas quero usar JTABLE, pq é mais facil pra mim.
Utilizo Netbeans!
Abraços a todos.
Pessoal como faço pra não permitir a edição de uma JTable. Sei que tem outras alternativa, mas quero usar JTABLE, pq é mais facil pra mim.
Utilizo Netbeans!
Abraços a todos.
O método isCellEditable de seu TableModel deve retornar false. Assim a JTable não poderá ser editada.
Tendi
ai vo ter que fazer um for nas linhas?
sera que num uma propriedade que faria isso em todo o objeto de uma vez?
vlw kra, brigadão
Não precisa fazer nenhum laço, basta que o seu Table Model retorne false no método isCellEditable. Aliás o próprio AbstractTableModel já faz esta implementação. Se implementar um TableModel que estende AbstractTableModel, a edição já estará bloqueada.
Agora se estiver usando DefaultTableModel, acho que usar a JTable não será tarefa fácil como disse no primeiro post.
Quanto a propriedade no Net Beans eu desconheço, mas é provável que exista.
tendi 
vlw kra
Sera que mais alguem pode me ajudar, com esse problema 
Abraços pessoal e agradeço a ajuda!
A resposta é exatamente isso mesmo.
O método isCellEditable do seu TableModel deve retornar false.
Blz vlw
flwwwwwwwww
Como está implementado o seu TableModel?
ixi to usando DefaultTableModel 
Insistindo no erro?
Acho que o Mark já tinha te falado para sair do Default naquele outro tópico que vc criou sobre esconder colunas, não?
Não é possível deixar colunas não editáveis no DefaultTableModel. Você teria que estende-lo, e sobrescrever o método isCellEditable.
Agora, o ideal mesmo, é você aprender a usar o JTable corretamente.
É to ligado, eu consegui aqui sobrescrever o método isCellEditable, mas eu ainda vou usar a tabela corretamente. Vlw kra
Cara eu acho que ninguem foi claro falando apenas do “isCellEditable”
o que tem que fazer é criar uma classe que herda do DefaultTableModel
ai no metodo isCellEditable você sobrescreve, adicionando apenas “return false”
e depois em vez de usar o DTM você usa sua classe.
uhum, tendi, mas ja consegui fazer aqui. Vlww
Cara eu acho que ninguem foi claro falando apenas do “isCellEditable”
o que tem que fazer é criar uma classe que herda do DefaultTableModel
ai no metodo isCellEditable você sobrescreve, adicionando apenas “return false”
e depois em vez de usar o DTM você usa sua classe.
O ideal é herdar de AbstractTableModel e não de [color=red]DefaultTableModel[/color].
O DefaultTableModel tem tantos problemas, mas tantos problemas, que não vale a pena ser utilizado.
Não é à toa que na assinatura de praticamente todos desse post, pedimos encarecidamente para não utilizar o Default.
verdade, esqueci, mas apenas quis citar a questão da herança e sabia que alguem ia falar isso 
valeu pelo reforço
Mas a forma de eu utilizar o AbstractTableModel é o mesmo que o DefaultTableModel? Ai só mudaria o objeto utilizado e claro todas as vantagens que o GUJ tem pregado.
A utilização de um table model próprio é bem mais simples do que um defaultTableModel.
Aqui tem um exemplo: http://www.guj.com.br/java/149861-recuperar-id-de-jtable/2#1174128.
O ideal é herdar de AbstractTableModel e não de [color=red]DefaultTableModel[/color].O DefaultTableModel tem tantos problemas, mas tantos problemas, que não vale a pena ser utilizado.
Não é à toa que na assinatura de praticamente todos desse post, pedimos encarecidamente para não utilizar o Default.
vinny… blz… eu já uso há um tempo o AbstractTableModel.
porém… estou com o problema de esconder a coluna. sabe alguma forma?
tentei no:
public int getColumnCount() {
return 6;
}
e colocando “” no:
public String getColumnName(int coluna) {
switch (coluna) {
case 0:
return "Cod."; <---< Aqui coloco ""
(...)
mais não funcionou…

poois é ne… so que as dúvidas ainda existem…tem uma galera ai que ressucita tópicos de beem antes
Não tem problema desenterrar tópico, o problema é desenterrar para uma dúvida que não tem haver com o assunto.
Esconder uma coluna não tem nada haver com não permitir edição.
mas vamos lá, terá que acessar o model das colunas para isso.
TableColumn columnHiddenFila = tbl.getColumnModel().getColumn(indice_da_sua_coluna);
columnHiddenFila.setMinWidth(0);
columnHiddenFila.setMaxWidth(0);
columnHiddenFila.setPreferredWidth(0);
Não tem problema desenterrar tópico, o problema é desenterrar para uma dúvida que não tem haver com o assunto.
Esconder uma coluna não tem nada haver com não permitir edição.
mas vamos lá, terá que acessar o model das colunas para isso.
TableColumn columnHiddenFila = tbl.getColumnModel().getColumn(indice_da_sua_coluna);
columnHiddenFila.setMinWidth(0);
columnHiddenFila.setMaxWidth(0);
columnHiddenFila.setPreferredWidth(0);
Não tem problema desenterrar tópico, o problema é desenterrar para uma dúvida que não tem haver com o assunto.
Esconder uma coluna não tem nada haver com não permitir edição.mas vamos lá, terá que acessar o model das colunas para isso.
TableColumn columnHiddenFila = tbl.getColumnModel().getColumn(indice_da_sua_coluna); columnHiddenFila.setMinWidth(0); columnHiddenFila.setMaxWidth(0); columnHiddenFila.setPreferredWidth(0);</blockquote>Muito obrigado pela resposta…
porém, sua resposta está totalmente ORIENTADA A POG. Não tem nada a ver, foge totalmente do conceito de orientação a objeto
eu não sei a solução, mais essa dai não resolve meu problema, o dado ainda fica aparecendo em ‘entrelinhas’(…)
sei que tem um meio, pq não pode aparecer a coluna, trabalho com 2 TABELAS em uma tela, e atualizadas em tempo real.
grato.
Att. Pedro Europeu
Realmente é uma gambiarra, mas desconheço uma forma de fazer isso, normalmente se quer esconder uma coluna, apenas não coloca ela.
Você teria que:
Uma alternativa mais elegante seria programar uma extensão do seu ColumnModel, que escondesse colunas. Essa alternativa está descrita aqui:
http://www.stephenkelvin.de/XTableColumnModel/
Você teria que:
- Retorna 1 a menos no getColumnCount();
- Fazer o getValueAt não considerar a coluna.
- Disparar um fireTableStructureChanged cada vez que a coluna caísse fora.
Uma alternativa mais elegante seria programar uma extensão do seu ColumnModel, que escondesse colunas. Essa alternativa está descrita aqui:
http://www.stephenkelvin.de/XTableColumnModel/
Obrigado Vinny. Mais uma vez ajudando a moçada ai…
Ficou bem interessante, apenas importei as duas classes para minha aplicação, observei o que elas faziam, e retirei somente o que eu precisava para minha implementação.
ficou óotimo. RENAN ROSA > Se ainda precisar, essa solução ai é bem interessante e simples!
valew…
Você teria que:
- Retorna 1 a menos no getColumnCount();
- Fazer o getValueAt não considerar a coluna.
- Disparar um fireTableStructureChanged cada vez que a coluna caísse fora.
Uma alternativa mais elegante seria programar uma extensão do seu ColumnModel, que escondesse colunas. Essa alternativa está descrita aqui:
http://www.stephenkelvin.de/XTableColumnModel/
Só mais uma coisa vinny, se puder, eu usava uma outra classe em minha TableModel para centralizar o conteúdo do registro, o nome da coluna e talz.
//1° PARTE
DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
centralizado.setHorizontalAlignment(SwingConstants.CENTER);
tabela.getColumnModel().getColumn(0).setCellRenderer(centralizado);
tabela.getColumnModel().getColumn(0).setMaxWidth(50);
tabela.getColumnModel().getColumn(0).setMinWidth(50);
Mais depois que eu coloquei essa parte do código:
//2° PARTE
tabela.setColumnModel(columnModel);
tabela.createDefaultColumnsFromModel();
TableColumn column = columnModel.getColumnByModelIndex(0);
columnModel.setColumnVisible(column, !columnModel.isColumnVisible(column));
não está dando mais para usar os efeitos desta outra implementação.
tem alguma idéia?
Obs.: Coloco a 2° PARTE depois da 1° PARTE.