JTable

Bom dia

Eu gostaria de uma ajuda com JTables.

Eu fiz uma tabela que possui uma linha apenas.
Apos clicar um botao, mais uma linha e acrescentada.
O problema e que ela nao aparece, mostrando somente o cabeçalho e a primeira que ja existe.

Eu desabilitei o comando para ajuste do scrollpane com a tabela e percebo que a linha e inserida corretamente.
Como eu faço para atualizar o redimensionamento do scrollpane ao clicar o botao de inserção de linha? eu tentei inserir o setPreferredScrollableViewportSize apos adicionar a linha mas nao funcionou. Alguem pode me ajudar?

class listenerAddLinha implements ActionListener{
public void actionPerformed(ActionEvent event){
adicionaLinha();
tab.setPreferredScrollableViewportSize(tab.getPreferredSize());

} 

}

Agradeço desde ja.

tenta isso:

(JScrollPane).setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

Ola Lauro
Nao funcionou.
O que aconteceu a mesma coisa, aparecem a linha de cabeçalho mais a primeira linha.
ao clicar no botao, aparece o scroll do lado mas o painel nao e redimensionado automaticamente.

Mais alguma sugestão ?

o codigo que eu coloquei, nao é dentro do evento… ok?
é na construtor do jscroll
ja passei por esse problema, em casa tenho um aplicativo onde resolvi isso.
mas agora to no trampo

Eu coloquei na criação do objeto scroll dentro do metodo que cria o meu JScrollPane com a minha JTable. Mas mesmo assim a linha nao aparece.
Se eu omitir o “tab.setPreferredScrollableViewportSize(tab.getPreferredSize());” ai o scrollPane fica do tamanho da minha tela e quando eu adiciono uma linha ela aparece. mas eu queria deixar o scrollpane do tamanho exato da minha tabela.

public JScrollPane criaTabela(){
	ArrayList dados = new ArrayList();
	dados.add(new String[] {"","","","","",""});				
	String[] colunas = new String[] {"Produto","Pet Food","Quantidade","US/Kg","Câmbio","Total"};		
		
	mod = new SimpleTableModel(dados,colunas);		
	tab = new JTable(mod);					
	
	tab.setPreferredScrollableViewportSize(tab.getPreferredSize());		
			
	scroll = new JScrollPane(tab);		
	scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
	return scroll;		
}

ahh entendi…
mas se vc quer o scroll sempre do tamanho da tabela, entao pra que vc quer ele?
adiciona somente a tabela.

E a primeira coisa que eu fiz.
Mas ai o cabeçalho da tabela nao aparece.
Ai eu fui lendo aqui no forum uma forma de como fazer para ele aparecer, e postaram que o ideal seria colocar a tabela dentro do JScrollPane.
E ai deu certo, o cabeçalho apareceu.
Tem alguma outra forma de fazer o cabeçalho aparecer sem o JScrollPane?

Fala Lauro

Consegui o que eu queria
Acho que eu me expressei mal.
Na verdade nao e exatamente do tamanho da tabela que eu queria o scrollPane. Eu queria que ele me aparecesse algumas linhas antes de iniciar a carregar a barra de scroll.
Para tal eu setei o comando tab.setPreferredScrollableViewportSize(new Dimension(0,100);
e a altura do Scrollpane ficou do jeito que eu queria.

Valeu pela ajuda e me desculpa se me expressei mal.