Pessoal, alguém tem algum exemplo de como fazer que a linha da jtalbe seja redimensionada assim que a pessoa for digitando? Atualmente uso DefaultTableModel.
Rafael, bom dia.
Evite usar o DefaultTableModel, e passe a usar o AbstractTableModel, sobre redimensionar as linhas da JTable você pode comparar quantos caracteres a pessoa digitou e aumentar o tamanho utilizando este exemplo .:
JTable.getColumnModel().getColumn(0).setPreferredWidth(10);
como faço para comparar esses caracteres?
Então Rafael, você possui campos de textos(JTextField) ou a pessoa está digitando na própria Linha da JTable?
está digitando na própria linha da jtable
Exite varias formas, a que eu estou pensando é: Pegar o texto da sua coluna, ex.:
String texto = tbPaises.getValueAt(1, 2).toString();
//1 - Número da linha.
//2 - Número da coluna.
char[] toCharArray = texto.toCharArray();
int tamanho = toCharArray.length;
switch(tamanho){
case: 10
JTable.getColumnModel().getColumn(0).setPreferredWidth(10);
break;
case: 20
JTable.getColumnModel().getColumn(0).setPreferredWidth(50);
break;
}
Essa seria a minha forma de fazer.
Testei aqui e não deu. deu erro de “Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException”
Posta o seu código, não da pra saber onde acontece esse erro.
Bom, é uma jtalbe, ontem 24 colunas e todas estão nulas. uma pessoa vai fazer um certo preenchimento onde não são poucas caracteres e conforme ele for digitando na celula eu precisava q a coluna se espadice, pois se ela não fizer isso, vai acabar sumindo os caracteres
Então Rafael, o erro acima pode ser por que suas colunas estão nulas. o código que te passei não vai funcionar, você pode deixar a pessoa redefinir o tamanho manualmente arrastando conforme for preciso, para isso basta mudar o modelo de sua JTable e deixar redimensionável.
mas não é possível esse ajuste ser feito com base na quantidade de caracter? conforme for escrevendo, vai aumentando
Não sei se te atenderia bem, mas você pode adicionar a sua JTable um evento do tipo KeyPressed, dentro do evento verificar a quantidade de caracteres. fiz o código aqui em na minha JTable e funcionou.
private void tbKeyPressed(java.awt.event.KeyEvent evt) {
int qtdCaracteres;
char[] toCharArray = tb.getValueAt(0, 2).toString().toCharArray();
qtdCaracteres = toCharArray.length;
switch(qtd){
case 9:
tb.getColumnModel().getColumn(2).setPreferredWidth(100);
break;
}
}
Lembrando que você terá que fazer diversos cases comparando o tamanho.
vlw mano, mas descobri q pode ser feito com um jtextarea na jtable