Estou criando uma aplicação que faz uma busca no banco de dados, retorna dois vetores, um de colunas outro de dados.
Uso o vetor de dados para construir minha JTable, e estou utilizando o AbstractTableModel.
Antes de construir a tabela eu crio um vetor de dados onde os títulos das colunas ficam na minha primeira coluna, e os dados seguem ao lado nas demais colunas. Transformo a tabela em uma tabela vertical. E também existe a opção de dividir a exibição em mais colunas, mas isso não é importante aqui.
O acontece é que por esta razão eu preciso de um jeito para inserir um componente em apenas 1 célula, e não definir a coluna toda com um tipo apenas. Alguém poderia me ajudar com isso? Já procurei muiiito e num encontrei como fazer.
Pessoal, me ajudem, ninguém sabe como fazer isso mesmo?
preciso inserir um componente em apenas 1 célula da JTable, sem que a a coluna toda fique com os componentes.
Ironlynx
Não “UPE” tópicos! :x
Já pesquisou por TableCellRenderer aqui mesmo no fórum?
L
LeoBuz
Já pesquisei tudo que vc possa imaginar…rs
Estou usando o TableCellRenderer para outros fins, mas para isso em específico não me parece possível.
Isso porque minha JTable é editável, então por mais que eu crie algum Componente pelo renderer e utilize isso somente para um célula, ainda não funciona corretamente. Isso funcionaria se eu conseguisse utilizar o CellEditor apenas em uma célula, mas somente consigo aplicar ele a uma coluna. Tentei criar um CellEditor alternando o Componente dele dependendo das condições mas também não consegui.
Alguma luz?? rs
Ironlynx
Vc está sobescrevendo o método isCellEditable para controlar o que é editável?
Por exemplo:
public boolean isCellEditable(int row, int col){
if(col == 1 || col == 4)return false;//se for a segund ou quinta coluna, deixa de ser editável
else return true;//TODO resto é editável
}
L
LeoBuz
Sim, eu estou fazendo isso. Pois minha primeira coluna e algumas outras não são editáveis.
Mas ainda não entendi o que isso tem a ver com o meu problema.
Ironlynx
Erm… absolutamente, nada! :lol:
Li com calma o que vc escreveu, vc quer é poder inserir diferentes tipos de dados em células de uma mesma coluna da JTable, certo?
Vc pode estender a própria JTable, modificando o getCellEditor e ir controlando(via alguns if´s mesmo) o que será retornado no DefaultCellEditor, ou usar o conceito de MultiRenderer apresentado nesse tópico abaixo: http://coding.derkeiler.com/Archive/Java/comp.lang.java.gui/2006-12/msg00029.html
L
LeoBuz
Olá, consegui algo mais próximo do que quero, vou postar o código aqui.
De qualquer maneira tenho dois problemas:
1 - Não queria ter que utilizar JTextFields na JTable, queria saber um meio de deixar as células como células normais, sem atribuir componentes à elas.
2 - Se não resolver o problema 1 vou precisar saber como fazer na JTable para que quando eu clicar nos JTextFields os dados não desapareçam, como se tivesse limpado o campo todo.
Segue o código, se alguém tiver algum sugestão me diga por favor: