Atualizar tamanho da JTable e JTableScrollPane em tempo de execucao

4 respostas
F

Olá pessoal

Estou tendo dificuldades em utilizar uma JTable dentro de um JTableScrollPane. Eu construí uma interface gráfica que permite ao usuário recuperar dados em um banco de dados e esses dados devem ser mostrados em uma JTable com um JTableScrollPane. A questao é que nao sei quantas linhas de dados serao recuperadas (podem ser 5, 50 ou 500) entao tenho que atualizar o tamanho da JTable e tambem o ScrollPane… eu até consigo mudar o tamanho da tabela porem o scrollpane nao é atualizado de forma que só consigo visualizar as linhas até o limite definido anteriormente para a tabela…

Qual método devo utilizar para atualizar o scrollPane?

agradeco qualquer ajuda!

abracos

Fabbio

4 Respostas

ViniGodoy

Normalmente o Scrollpane se atualiza sozinho. Você está disparando o evento fireTableRowsInserted no seu TableModel?

F

Primeiramente obrigado por tentar ajudar!

Em resposta a sua pergunta ViniGodoy, estou chamando o evento fireTableRowsInserted sim…

As linhas estao sendo inseridas corretamente. Apenas o scrollpane que nao se atualiza. O que eu faco é redefinir o tamanho da tabela, de acordo com o numero de linhas que tenho q mostrar… Primeiro eu chamo o método que calcula o tamanho necessário da tabela e faz essa mudanca:

private void setViewTableSize(){

int tableSize = (getViewTable().getRowHeight()* 38 * patternsRetrieved);

getViewTable().setSize(300, tableSize);

}

Depois eu chamo o método de inserir linhas da classe TableModel que eu criei…

public void addRows(ArrayList<String[]> messageThroughput){

for(int i = 0; i<messageThroughput.size(); i++){

getLines().add((String[]) messageThroughput.get(i));

int row = getLines().size()-1;

fireTableRowsInserted(row,row);

}	

}
public static ArrayList<String[]> getLines() {

return lines;

}

Onde lines é o atributo da classe TableModel que contem as linhas (é um ArrayList)

Ele mostra bonitinho as novas linhas e tudo mais, só que o tamanho do scrollpane nao atualiza para o tamanho correto da tabela, entao só consigo ver as linhas até onde o tamanho da minha tabela estava definido anteriormente… tenho que dar algum validate(), repaint ou sei la?

valeu!

fabbio

ViniGodoy

Oi.

Sempre que postar códigos, deixe-os formatados usando a tag code. Senão fica difícil de entender… :wink:
Se você inda não sabe fazer isso, veja o link:
http://www.guj.com.br/posts/list/50115.java

Você não deveria nem sequer estar calculando o tamanho da JTable. Isso não é necessário.
A JTable é o único componente no seu JScrollPane?

Geralmente, o scrollpane reage ao PreferredSize. Tente usar o método setPreferredSize, além do setSize.

F

Olá pessoal

Foi mal por nao utilizar a tag code… usarei a partir de agora…

Eu verifiquei no meu código que estava utilizando o objeto TableModel errado para atualizar a tabela… Fiz a correcao e agora nao preciso definir nem recalcular o tamanho da tabela, ele automaticamente varia de acordo com o número de linhas inseridas e o tamanho do scrollPane também varia de acordo com a necessidade… Está funcionando beleza!

Obrigado ViniGodoy pela ajuda!

abracos

Fabbio

Criado 18 de abril de 2008
Ultima resposta 21 de abr. de 2008
Respostas 4
Participantes 2