ola galera, estou fazendo uma tabela e gostaria de excluir a linha que eu selecionar
como que eu posso fazer?
segue o codigo abaixo:
ola galera, estou fazendo uma tabela e gostaria de excluir a linha que eu selecionar
como que eu posso fazer?
segue o codigo abaixo:
afinal… vc quer excluir uma coluna ou uma linha??
é excluir a linha
=)
errei!
int row=jTable.getselectedRow();
DefaultTableModel dtm=(DefaultTableModel)jTable.getModel();
dtm.removeRow(row);
Apesar de que seria vc criar seu TableModel…mas pra uma solução mais rápida esse dai serve…
mas lembre-se sempre de implementar seu table model!
8)
eu sempre usei o DefaultTableModel… sempre atendeu minhas necessidades…
O problema do DefaultTableModel é que:
a) Ele é mais difícil de usar do que criar o seu próprio TableModel;
b) Ele mistura parte da lógica de negócio na view;
c) Ele ocupa pelo menos o dobro de espaço em memória;
d) Ele exige mais processamento;
e) Ele exige casts inseguros;
f) Ele é sincronizado;
g) Ele é menos flexível.
O problema do DefaultTableModel é que:
a) Ele é mais difícil de usar do que criar o seu próprio TableModel;
b) Ele mistura parte da lógica de negócio na view;
c) Ele ocupa pelo menos o dobro de espaço em memória;
d) Ele exige mais processamento;
e) Ele exige casts inseguros;
f) Ele é sincronizado;
g) Ele é menos flexível.[/quote]
Oi,
Perfeito como sempre =)
Em relação ao tópico, pra tudo na vida existem um add e um remove =P
Tchauzin!
O problema do DefaultTableModel é que:
a) Ele é mais difícil de usar do que criar o seu próprio TableModel;
b) Ele mistura parte da lógica de negócio na view;
c) Ele ocupa pelo menos o dobro de espaço em memória;
d) Ele exige mais processamento;
e) Ele exige casts inseguros;
f) Ele é sincronizado;
g) Ele é menos flexível.[/quote]
Não sabia destas desvantagens… obrigado por informar…
pena que eu vi teu post sobre ObjectTableModel muito tarde… seria muito custoso (em termos de tempo) pra mim readaptar todo o fonte pois praticamente todas minhas classes da camada view contém pelo menos uma JTable…
Aproveitando… eu consigo utilizar o ObjectTableModel sem alterar a camada lógica?
Voce vai ter que alterar sua lógica. Por que por exemplo onde voce tem algo assim:
String[] dadosPessoas = modelo.getRow(10);
Dai voce sabe que na coluna 0 do array é o nome no 1 a idade e etc.
Seria o seguinte
Pessoa pessoa = modelo.get(10);
Voce teria o objeto com seus getters e setters.
Muito melhor para se trabalhar.
tem essa linha abaixo:
como que eu posso fazer pra passar um objeto ja todo setado?
eu passei porem ele ficou soh na primeira coluna e apareceu isso Contato@3901c6
Mas voce ta usando o ObjectTableModel ou o Default?
Da uma olhada melhor no tutorial http://markytechs.wordpress.com/2009/05/29/objecttablemodel
segue o codigo para dar uma olhada!
[quote=Mark_Ameba]Voce vai ter que alterar sua lógica. Por que por exemplo onde voce tem algo assim:
String[] dadosPessoas = modelo.getRow(10);
Dai voce sabe que na coluna 0 do array é o nome no 1 a idade e etc.
Seria o seguinte
Pessoa pessoa = modelo.get(10);
Voce teria o objeto com seus getters e setters.
Muito melhor para se trabalhar.[/quote]
legal… eu já tinha visto o tutorial do ObjectTableModel… mas eu vi muito tarde…
qual seria a melhor forma pra mim fazer sem ter mudanças fora da view e sem usar o DefaultTableModel já que este é tão ruim?
segue um modelo de como faço atualmente… este exemplo tem uma coluna que tem um checkBox (lembrando que o código é funcional mas como informado pelo ViniGodoy parece que não é uma boa prática)…
[code]jt_permissoes.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"ID", "Funcionalidade", "Permitir"
}
) {
Class[] types = new Class [] {
java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});[/code]
então na hora de recuperar dados (lembrando que nem sempre eu completo o objeto inteiro… passo somente alguns atributos por questão de desempenho…)
[code]DefaultTableModel model = (DefaultTableModel)jt_permissoes.getModel();
model.setNumRows(0);
List funcs = new FuncionalidadeServiceImpl().get("");
for (Iterator iterator = funcs.iterator(); iterator.hasNext();) {
Funcionalidade func = (Funcionalidade) iterator.next();
model.addRow(new Object[]{func.getCodigo(), func.getDescricao(),false});
}[/code]
obrigado a todos…
acho que vou tomar coragem (e tempo também…) e reajustar meus projetos com ObjectTableModel… tenho ao total 4 sistemas(diferentes) já implantados… será que vale a pena esta mudança agora?
Antes tarde do que mais tarde ainda.
Voce nao precisa necessariamente usar o ObjectTableModel que eu fiz. Seria legal voce entender a responsabilidade do Model e fazer um.
Mas se nao tiver com paciencia voce pode só usar mesmo sem problemas.
consegui fazer o metodo
agora o problema seria pra buscar e alterar as linhas
alguem me sugere algo?
mas achei muito interessante o ObjectTableModel… é que eu estava acostumado a usar o DefaultTableModel mas até então não sabia de todas essas desvantagens citadas… e se é pra melhorar a performance/rendimento das aplicações eu readapto os projetos…
Só fiquei meio em dúvida em ter que alterar a camada lógica… isso foge um pouco da minha ideia pois assim estarei vinculando a camada lógica com a view mas pelo que vi existe outra solução criando instâncias de FieldResolver diretamente nas classes visuais…
e outra… eu tenho como colocar uma coluna na JTable sem vincular a coluna à um atributo de uma classe em específico? pois precisarei colocar uma coluna de checkBox onde o usuário escolhe os clientes para os quais ele deseja mandar e-mails e estes booleans não estão na classe Cliente pois são meramente visuais…
existe alguma forma de fazer isso?
@diego_sepa
Para alterar as linhas é facil, altere o objeto da lista de objetos do modelo que a tabela se altera.
Para buscar dados tem o SelectTable que também tem um um post no meu blog falando sobre isso.
Voce precisa passar uma lista de objetos que voce quer que retorne um objeto e ouvir o evento.
@erico_kl
Se voce tiver usando o AnnotationResolver voce pode passar a String como parametro “blank” que cria uma coluna sem ter dados nenhum.
Se tiver usando diretamente FieldResolver voce precisa passar como parametro o BlankHandler do pacote mark.utils.el.handler.
ok… e para criar uma coluna de checkBox… consigo fazer com ObjectTableModel?
obrigado pela ajuda…