Estou com a seguinte dúvida:
Tenho uma tabela que inicia com 0(Zero) linhas, clico em um botão no qual inicia um evento e este lista registros nesta tabela.
Gostaria que a barra de rolagem, fosse para baixo automaticamente então fiz o seguinte:
Mas ela não rolou atomaticamente, então cliquei novamente no botão para que ele listasse novamente e ai ele rolou.
Então coloquei um System.out pra ver qual valor estava retornando na primeira vez que eu clicava no botão, e deu ZERO(o valor no qual iniciava a tabela).
Agora... Porque ele não atualiza o valor do getHeight após eu listar e só na segunda vez que aciono o evento ele pega o valor correto?
Então, já é o que estou fazendo. o teu scroll é o meu spAtendimento.
O que acontece é o seguinte:
Clico no botão e ele lista tudo de uma vez e deveria rolar pro fim, só que o getHeight esta retornando 0 zero(que era o valor inicial da tabela).
E ele só funciona se eu clico pela segunda vez que dai ele retorna o valor certo do getHeight, como se ele só desse um “refresh” nas propriedades
da tabela quando eu saio do meu evento.
Existiria algum “REFRESH/RELOAD” da JTable para ele retornasse o valor correto do getHeight?
Marky.Vasconcelos
table.getPreferredSize().height;
vini.roggia
Ponto para Mark.
Realmente, o .getPreferredSize().height; retorna o valor correto (atualizado)
Dúvida, qual a diferença do getPreferredSize().height; e tabela.getHeight(); ?
Outra coisa, continuo com o problema da mesma forma.
O código teria ficado:
privatevoidbtListarTodosMousePressed(java.awt.event.MouseEventevt){// TODO add your handling code here:this.jogaNaTabela();//método que lista os registros na tabelaspAtendimento.getVerticalScrollBar().setValue(tbAtendimento.getPreferredSize().height);}
Mas ele lista todos os registros na tabela mas não rola a barra até o fim, mas se eu clico novamente no botão ele rola.
O que pode ser?
Marky.Vasconcelos
Se não me engano isso por que o método getHeight retorna getSize().height. Mas o LayoutManager só seta o tamanho do PreferredSize, por isso funciona.
o tabela.getHeight é o mesmo que tabela.getBounds.getHeight, mas não sei porque essa opção não da um “refresh” sendo que o preferredSize tras o valor correto.
O getMaximum retorna o mesmo valor do .getHeight(), sendo que na segunda vez que eu clico ele retorna o valor correto.
Mas o que eu acho estranho é que o preferredSize retorna o valor certo mas mesmo assim não rola a barra, só na segunda vez que eu clico.
Alguma idéia?
vini.roggia
Será que existe o tal RELOAD/REFRESH pra JTable?
Pois quando ele sai do evento de mouse pressionado e eu clico novamente no botão ele rola até o final, se existisse esse “reload” eu poderia colocar no fim do evento.